この質問は、次の質問に関連しています: Updating Leaflet Marker Position Every x Seconds with JSON . Leaflet で作成した地図を WebGLEarth で 3D 地球儀に投影したいだけです。通常、オリジナルの Leaflet コードの L.map、L.marker などを WE.map、WE.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();
...WE.markerによる。残念ながら、位置の更新は、2D マップでは機能していましたが、3D グローブでは機能しなくなりました。追加してみました
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);
]