用定时器模拟实时获取后台数据 当取到数据后实体同时移动到目标位置 这种方式不再与Cesium时间关联
实现效果:每秒新增一个坐标;每秒实体运动到相应正确位置且实现实体转向功能
PS:该方法实体经纬度超过正负180,90时需进行坐标计算转为正负180,90范围内的坐标后实体转向才正常;本文未进行处理
var viewer = new Cesium.Viewer('cesiumContainer', {
infoBox : false,
selectionIndicator : false,
shadows : true,
sceneMode: 2, // 初始场景模式
shouldAnimate : true
});
var positions = [];
var poly = undefined;
var entityArr=[];
var PolyLinePrimitive = (function(){
function _(positions){
this.options = {
polyline : {
show : true,
positions : [],
material : Cesium.Color.CORNFLOWERBLUE,
width : 1,
arcType : Cesium.ArcType.RHUMB,
}
};
this.positions = positions;
this._init();
}
_.prototype._init = function(){
var _self = this;
var _update = function(){
return _self.positions;
};
//实时更新polyline.positions
this.options.polyline.positions = new Cesium.CallbackProperty(_update,false);
viewer.entities.add(this.options);
entityArr.push(this.options);
};
return _;
})();
// 模型转向-经纬度求与正北方向的夹角(方向角)
function getAngel(A, B) {
var dx = (B.m_RadLo - A.m_RadLo) * A.Ed;
var dy = (B.m_RadLa - A.m_RadLa) * A.Ec;
var angle = 0.0;
angle = Math.atan(Math.abs(dx / dy)) * 180. / Math.PI;
var dLo = B.m_Longitude - A.m_Longitude;
var dLa = B.m_Latitude - A.m_Latitude;
if (dLo > 0 && dLa <= 0) {
angle = (90 - angle) + 90;
} else if (dLo <= 0 && dLa < 0) {
angle = angle + 180;
} else if (dLo < 0 && dLa >= 0) {
angle = (90 - angle) + 270;
}
return angle;
}
function MyLatLng(longitude, latitude) {
var Rc = 6378137;
var Rj = 6356725;
var m_LoDeg, m_LoMin, m_LoSec;
var m_LaDeg, m_LaMin, m_LaSec;
var m_Longitude, m_Latitude;
var m_RadLo, m_RadLa;
var Ec;
var Ed;
m_LoDeg = longitude;
m_LoMin = Number.parseInt((longitude - m_LoDeg) * 60);
m_LoSec = (longitude - m_LoDeg - m_LoMin / 60.) * 3600;
m_LaDeg = latitude;
m_LaMin = Number.parseInt((latitude - m_LaDeg) * 60);
m_LaSec = (latitude - m_LaDeg - m_LaMin / 60.) * 3600;
m_Longitude = longitude;
m_Latitude = latitude;
m_RadLo = longitude * Math.PI / 180.;
m_RadLa = latitude * Math.PI / 180.;
Ec = Rj + (Rc - Rj) * (90. - m_Latitude) / 90.;
Ed = Ec * Math.cos(m_RadLa);
return {
m_RadLo: m_RadLo,
m_RadLa: m_RadLa,
m_Longitude: m_Longitude,
m_Latitude: m_Lat
7876




被折叠的 条评论
为什么被折叠?



