移动标记时的传单错误:setLatLng不是函数

时间:2016-12-20 17:05:03

标签: javascript leaflet

我是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方法,为什么不调用它?是否有其他插件需要先被安装才能被识别?

1 个答案:

答案 0 :(得分:0)

在open-notify示例中,示例代码中有一条注释:

  

请参阅传单文档以设置图标和地图图层

问题中显示的代码未显示iss的定义。该错误表明它可能不是传单marker

ississcirc可能会像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