Этот вопрос связан с этим вопросом: Обновление позиции маркера листовки каждые x Секунды с JSON. Только я хочу спроецировать карту, созданную с помощью Leaflet, на трехмерный глобус с помощью WebGLEarth. Обычно вы можете комбинировать Leaflet и WebGLEarth, заменив L.map, L.marker и т. Д. На WE.map, WE.marker в исходном коде Leaflet.
Я хотел бы, чтобы текущее местоположение Международной космической станции было спроецировано на моем трехмерном глобусе, поэтому я заменил L.marker в функции update_position этого кода ...
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, с цветной траекторией, по которой станция прошла на своем последнем обороте вокруг Земли. Какие-нибудь советы, как это сделать?
Заранее спасибо!
[Edit 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);
]