更新标记位置 json Leaflet 和 WebGLEarth
Update marker position json Leaflet and WebGLEarth
这个问题与这个问题有关:使用 JSON 每 x 秒更新一次传单标记位置。只有我想用 Leaflet 创建的地图投影到 WebGLEarth 的 3D 地球上。通常,您可以通过在原始传单代码中将L.map,L.marker等替换为WE.map,WE.markr来组合Leaflet和WebGLEarth。
我想将国际空间站的当前位置投影到我的 3D 地球上,所以我替换了此代码update_position函数中的 L.marker ...
var cloudmadeUrl = 'http://{s}.mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.jpg';
var subDomains = ['otile1','otile2','otile3','otile4'];
var cloudmade = new L.TileLayer(cloudmadeUrl, {maxZoom: 11, subdomains: subDomains});
var map = new L.Map('map', {layers : [cloudmade]}).fitWorld();
var iss;
function update_position() {
$.getJSON('http://open-notify-api.herokuapp.com/iss-now.json?callback=?', function(data) {
console.log(data);
var latitude = data["iss_position"]["latitude"];
var longitude = data["iss_position"]["longitude"];
if (!iss) {
iss = L.marker([latitude,longitude]).bindPopup("I am the ISS").addTo(map);
}
iss.setLatLng([latitude,longitude]).update();
setTimeout(update_position, 1000);
});
}
update_position();
演示
。由WE.marker。不幸的是,位置的更新在我的 3D 地球上不再有效,而在 2D 地图上确实有效。我尝试添加
setInterval(update_position,2000);
就在 update_position(); 上方,然后标记更新了几次 (~5),然后突然停止。如果我通过平移与地球上的鼠标进行交互,标记会更新到其当前位置,然后更新几次,最终再次停止。
主要问题:有谁知道如何解决这个问题,以便我有一个连续的标记更新?
附加问题:理想情况下,我希望国际空间站的轨道看起来像 https://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=CZML.html&label=Showcases,空间站在其绕地球的最后一个轨道上行进的彩色路径。关于如何做到这一点的任何提示?
提前感谢!
[编辑23-1-2015:我设法通过为 IIS 创建一个新变量(即 iis2)来不断更新它。为什么这对我来说是不清楚的。不幸的是,所有"旧"标记位置都不会消失,所以我得到了一个模糊的标记轨迹。
var iss;
var iis2;
function update_position() {
$.getJSON('http://open-notify-api.herokuapp.com/iss-now.json?callback=?', function(data) {
console.log(data);
var latitude = data["iss_position"]["latitude"];
var longitude = data["iss_position"]["longitude"];
if (!iss) {
iss2 = WE.marker([latitude,longitude]).bindPopup("I am the ISS").addTo(map);
}
iss2.setLatLng([latitude,longitude]).update();
});
}
update_position();
setInterval(update_position,1000);
]
删除标记
var iss;
var iis2;
function update_position() {
$.getJSON('http://open-notify-api.herokuapp.com/iss-now.json?callback=?', function(data) {
console.log(data);
map.removeLayer(iss2);
var latitude = data["iss_position"]["latitude"];
var longitude = data["iss_position"]["longitude"];
if (!iss) {
iss2 = WE.marker([latitude,longitude]).bindPopup("I am the ISS").addTo(map);
}
iss2.setLatLng([latitude,longitude]).update();
});
}
update_position();
setInterval(update_position,1000);
相关文章:
- LEAFLET地图和带有选择选项的标记-ANGULARjs
- 如何在使用mapbox LeafLet拖动标记时获取标记拖动事件
- 保存leaflet.js的当前视图
- 如何删除leaflet.draw中的绘图层
- 根据用户输入的leaflet.js过滤标记
- 如何在Leaflet.js中按属性过滤TopoJSON功能
- 是否可以同时使用Leaflet.js中的中心和边界属性
- Heatmap.js Leaflet Heatmap
- 将卫星轨道添加到WebGLEarth地图(例如Leafletjs或Cesiumjs)
- 在 React-Leaflet 库中为
- 更新标记位置 json Leaflet 和 WebGLEarth
- 延迟加载由 appendChild() 在 javascript/leaflet 中附加的图像
- 我可以用LeafLet更改GeoJSON LineString的填充颜色吗?
- 传单错误:对象 #<对象> 在 file:///android_asset/www/leaflet.js:6 没有方法“
- 使用Leaflet.Control.从下拉列表中搜索标记
- 在 Leaflet Map 上显示 jQuery 动态 GeoJSON 内容
- 如何使用不同的工具提示插件模仿 Leaflet.Draw 工具提示样式
- AngularJS Leaflet 指令 $scope.marker 在拖动时不会更新
- 在 Leaflet.markercluster 中显示标记
- 将React和Leaflet结合起来的好方法