当移动标记达到一定时间时触发事件

时间:2018-11-12 09:33:14

标签: javascript leaflet

我正在使用this插件在折线周围移动标记。

这是移动标记的启动方式。

var locations = [
  ["LOCATION_1",25.700769, 82.300140],
  ["LOCATION_2",26.600969, 83.400260],
  ["LOCATION_3",27.600969, 84.400260],
  ["LOCATION_4",28.600969, 85.400260],
  ["LOCATION_5",29.600969, 86.400260],
  ["LOCATION_6",24.600969, 87.400260],
  ["LOCATION_7",23.500969, 88.200260],
  ["LOCATION_8",22.400969, 89.300260],
  ["LOCATION_9",25.700569, 90.400000]
];

var latlng = array();

for (var i = 0; i < locations.length; i++) {
  latlngs.push([locations[i][1],locations[i][2]]);
}

var myMovingMarker = L.Marker.movingMarker(latlngs,
  [2500,4000,2000,5000,4000,5000,3000,2000,4000], {
  autostart: true
});

我希望每次标记到达locations数组中的坐标时都弹出一条消息。 每当标记达到某个latlng坐标时,是否有任何方法可以触发事件?

或者当标记重新捕获某个点时,还有其他方法可以绑定弹出窗口。

1 个答案:

答案 0 :(得分:2)

首先注册一个捕获start状态的事件

myMovingMarker.on('start',function(event) {
  // console log your event
  console.log(event)
});

我不确定,但是latlng内应该有一个名为event.target的属性

一旦您拥有latlng

myMovingMarker.on('move',function(event) {
  // ... you already have your lat and lng here
  // check if your latlng is in your array here
  if (condition) {
     myMovingMarker
       .bindPopup('<b>My popup content !</b>', {closeOnClick: false})
       .openPopup()
  } else {
     myMovingMarker.closePopup()
     myMovingMarker.unbindPopup()
  }
});