繁体   English   中英

更新标记位置JSON Leaflet和WebGLEarth

[英]Update marker position json Leaflet and WebGLEarth

这个问题与这个问题有关: 使用JSON每隔2秒更新一次传单标记位置 只有我想使用WebGLEarth将使用Leaflet创建的地图投影到3D地球上。 通常,您可以通过在原始Leaflet代码中用WE.map,WE.marker替换L.map,L.marker等来组合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();

DEMO

...通过WE.marker。 不幸的是,位置更新在我的3D地球上不再起作用,而在2D地图上却起作用。 我尝试添加

setInterval(update_position,2000);

刚好在update_position();上方,标记会更新几次(〜5),然后突然停止。 如果我通过平移在地球上与鼠标交互,则标记会更新到其当前位置,此后再更新几次,最终会再次停止。

主要问题:有人知道如何解决此问题,以便我不断进行标记更新吗?

附加问题:理想情况下,我希望国际空间站的轨道看起来像https://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=CZML.html&label=Showcases ,其中该空间站在其地球的最后一个轨道。 有关如何执行此操作的任何提示?

提前致谢!

[2015年1月23日编辑:我通过为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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM