我是Leaflet的新手,并使用Open Notify API(http://open-notify.org/Open-Notify-API/)练习在地图上跟踪ISS。创建标记并将其添加到地图后,我调用Open Notify提供的以下功能:
function moveISS () {
$.getJSON('http://api.open-notify.org/iss-now.json?callback=?', function(data) {
var lat = data['iss_position']['latitude'];
var lon = data['iss_position']['longitude'];
iss.setLatLng([lat, lon]);
isscirc.setLatLng([lat, lon]);
map.panTo([lat, lon], animate=true);
});
setTimeout(moveISS, 5000);
}
这成功获取了lat和lon值,但后来我得到了错误:
Uncaught TypeError: iss.setLatLng is not a function
我知道传单文档(http://leafletjs.com/reference-1.0.2.html#marker-setlatlng)中存在setLatLng方法,为什么不调用它?是否有其他插件需要先被安装才能被识别?
答案 0 :(得分:0)
在open-notify示例中,示例代码中有一条注释:
请参阅传单文档以设置图标和地图图层
问题中显示的代码未显示iss
的定义。该错误表明它可能不是传单marker
。
iss
和isscirc
可能会像Leaflet示例代码中那样定义:
var iss = L.marker([51.5, -0.09]).addTo(map).bindPopup("<b>The International Space Station</b>").openPopup();
var isscirc = L.circle([51.508, -0.11], 500, {
color: 'red',
fillColor: '#f03',
fillOpacity: 0.5
}).addTo(map);
上面的起始坐标是任意的,并会在第一次调用moveISS
时更新。
有关从Leaflet示例代码改编的工作示例,请参阅jsfiddle。