import * as Cesium from "cesium/Cesium.js";
import config from "./config";
import Vue from 'vue'
export const initLoadShipBoatModel = (
function() {
var viewer;
var handler;
var dataSource;
var ship_color = Cesium.Color.RED;
var ship_opacity = 1;
function constructInitShipBoat(portName, shipDatas) {
viewer = Vue.prototype.$MyCesium.viewer;
handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
Vue.prototype.$MyCesium.removeDataSource('ship')
dataSource = new Cesium.CustomDataSource('ship');
viewer.dataSources.add(dataSource);
initShipBoat(shipDatas)
}
function initShipBoat(shipDatas) {
let data = shipDatas
console.log('initShipBoat', data, dataSource.entities.values.length)
console.time("shipTime")
for(let i = 0, len = data.length; i < len; i++) {
let item = data[i]
if (!item.lon || !item.lat) continue
item.lon = item.lon / 10000000
item.lat = item.lat / 10000000
let length = parseFloat(item.length)
let position = Cesium.Cartesian3.fromDegrees(parseFloat(item.lon), parseFloat(item.lat));
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);
let uri = length > 24 ? config.mapUrl.gltf.shipBoat : length > 12 ? config.mapUrl.gltf.shipBoat2 : config.mapUrl.gltf.shipBoat2;
dataSource.entities.add(new Cesium.Entity({
type: "ship",
tag: "ship",
shipName: item.shipName,
id: item.shipId,
position: Cesium.Cartesian3.fromDegrees(parseFloat(item.lon), parseFloat(item.lat)),
model: {
uri: uri,
scale: 1,
silhouetteColor: Cesium.Color.fromAlpha(ship_color, parseFloat(0.8)),
silhouetteSize: ship_opacity
},
lon: item.lon,
lat: item.lat,
mmsi: item.mmsi,
nationality: item.nationality,
dataSource: item.dataSource,
shipSource: item.shipSource,
targetNumber: item.targetNumber,
type: item.type,
update: item.update,
description: item
}));
}
console.timeEnd("shipTime")
}
return constructInitShipBoat
})()