2013-09-24 1 views
0

Я хочу предупредить все позиции моих маркеров с getLatLng.Лист обновления Маркер getLatLng

Это работает также очень хорошо.

я помещаю маркер на карте по этому коду:

var marker = new L.Marker(e.latlng, { 
     draggable:true, 

     contextmenu: true, 
      contextmenuItems: [{ 
      text: 'Marker entfernen', 
       index: 0, 
       callback: remove 
      },{ 

       separator: true, 
       index: 1 
      }] 
     });  
    map.addLayer(marker); 

И я получить позицию по этому коду:

$(".test").click(function() { 
alert(marker.getLatLng()); 
}); 

Все добавляющие позиции маркера будет начеку.

Но если я удалить маркер с помощью этого кода:

map.removeLayer(marker); 

расположения от удаленных маркеров еще отображается в alertbox!

ответ

1

Объект Javascript по-прежнему существует со всеми его свойствами после удаления с помощью map.removeLayer(marker);. Для быстрого исправления вы можете просто добавить marker = null; после того, как вы удалите его из слоя. Тем не менее, вам нужно будет проверить значение null перед вызовом предупреждения.

+0

Эй, спасибо, это работает для меня с одним маркером. Но я использую несколько маркеров на карте, поэтому все местоположение маркера будет иметь значение null. Можно уменьшить состояние маркера на единицу? Как 'marker = x-1;'? – rkesize

+0

Если у вас есть несколько маркеров, вы должны отслеживать их отдельно. Например: «var marker1 = ..., var marker2 = ...» и т. Д. Или массив маркеров. В противном случае весь дальнейший код, который обращается к «маркеру», будет ссылаться на последний маркер. Например, 'map.removeLayer (marker)' не будет удалять маркеры, кроме последнего, и т. Д. – tyr

+0

Yea, , но маркеры не имеют маркеров по умолчанию. Я сгенерировал их, щелкнув по карте, как я могу создать массив, щелкнув по их карте? Для массива мне нужна переменная, которая больше 0, чем 'for (i = 0; i rkesize