2

Возможно, у меня может возникнуть некоторый фундаментальный закон в JavaScript здесь, но у меня есть вопрос относительно позиции latlng маркера Google Maps после его перетаскивания.Позиция маркера в Картах Google после перетаскивания

Я успешно добавлять маркеры на карту, и назначение этих маркеров добавлены к переменной, или быть более точным, я использую JQuery, чтобы добавить эти маркеры к data из сНу элемента карты содержат, используя jQuery.data().

Теперь проблема возникает, когда я перетаскиваю эти маркеры по карте. Я понимаю событие dragend и как его записывать и записывать, а также данные, включая новую позицию latlng после перетаскивания. При этом я понял, что объекты в JavaScript передаются по ссылке, поэтому я не могу понять, почему позиция ссылки маркера, хранящаяся в элементе, не обновляется, чтобы автоматически отражать новую позицию?

Я предполагаю, что это может быть один из следующих:

  1. объектов, передаваемых в data элементе дублируются, не передаются по ссылке, и, следовательно, проблемы Jquery.
  2. Google Maps автоматически не обновляет позиции latlng своих маркеров, хранящихся в переменных или data узлах, и, следовательно, проблему с Google Картами.
  3. Мне нужно физически запустить событие dragend, чтобы обновить позицию (звучит как нечетное решение).

Я в основном прошу этого, чтобы узнать, нужно ли мне регистрировать его как проблему в любом месте, или я просто являюсь идиотом. Любой вход от других закаленных Google Mappers действительно помог бы мне здесь.

Приветствия заранее.

+0

Если бы я мог отречься вопрос, не глядя, как идиот, я бы. Это, безусловно, обновляет позицию, я просто забыл перевыпускать в свою консоль JS. Duh. – designermonkey

+0

Я считаю, вы можете удалить вопрос! – TMS

+1

Слишком поздно, мой идиотизм останется навсегда. – designermonkey

ответ

6

Я видел, что вы решили свою проблему, но может быть, это полезно для других, читающих этот вопрос.

Карты Google переписывают позицию маркера новым объектом LatLng после перетаскивания. Если вы сохраняете позицию (LatLng-Object) маркера в переменной, переменная содержит ссылку на ранее определенный LatLng-Object. После перетаскивания позиция маркера обновляется, но не сам LatLng-Object.

Давайте посмотрим на следующий код:

var ll = new google.maps.LatLng(52, 0.054); 
var m = new google.maps.Marker({ 
    position: ll, 
    draggable: true, 
    title: 'hello world'  
}); 

google.maps.event.addListener(m, 'dragend', function(ev){ 
    alert(ll.lat() + ' ' + ll.lng()); // always the same LatLng-Object... 
    alert(m.getPosition()); // new LatLng-Object after dragend-event... 
}); 
+0

должен был знать, что вы ответите Адриану; o) – designermonkey

Смежные вопросы