【问题标题】:Leaflet error when moving marker: setLatLng is not a function移动标记时的传单错误:setLatLng 不是函数
【发布时间】:2016-12-21 05:18:57
【问题描述】:

我是 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); 
}

这成功获取了纬度和经度值,但随后出现错误:

Uncaught TypeError: iss.setLatLng is not a function

我知道 Leaflet 文档 (http://leafletjs.com/reference-1.0.2.html#marker-setlatlng) 中存在 setLatLng 方法,那么为什么不调用它呢?是否有其他插件需要先安装才能识别?

【问题讨论】:

  • iss 未定义?
  • 就是这样。我以为我已经在函数之外定义了它,但是我没有看到的地方一定有语法错误。绕圈子认为问题出在 setLatLng 上。

标签: javascript leaflet


【解决方案1】:

从 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时更新。

请参阅 jsfiddle 了解改编自 Leaflet 示例代码的工作示例。

【讨论】:

  • 就是这样。问题是我已经初始化了我的变量,但是错误。我的粗心错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
  • 2021-12-18
  • 2023-03-22
  • 2015-01-21
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
相关资源
最近更新 更多