在这里,我可能忽略了JavaScript中的一些基本定律,但我有一个问题,关于拖放Google标记后的最近位置。
我正在成功地将标记添加到映射中,并将这些添加的标记分配给变量,或者更准确地说,我使用jQuery将这些标记添加到映射的div元素的data中,使用jQuery.data()。
现在,当我把这些标记拖到地图上时,我遇到了一个问题。我了解dragend事件,以及如何激发/捕获它和它的数据,包括拖动后的新的锁定位置。尽管如此,我的理解是JavaScript中的对象是通过引用传递的,所以我不能理解为什么元素中存储的标记引用的位置不被更新以自动反映新的位置?
我想可能是以下几种之一:
传递到元素的problem.
data节点中,因此也会出现谷歌地图问题。dragend事件才能更新位置(听起来像是一个奇怪的解决方案)。我基本上是在询问这个问题,看看我是否需要把它作为一个问题记录到任何地方,或者我是否只是个白痴。任何来自其他强硬的Google的输入都会在这里帮助我。
提前干杯。
发布于 2012-01-03 09:44:41
我看到你已经解决了你的问题,但也许它对其他人阅读这个问题是有帮助的。
Google在拖放后用一个新的LatLng对象覆盖标记的位置。如果将标记的位置( LatLng-Object )存储在变量中,则该变量保存对先前定义的LatLng对象的引用。在拖放之后,标记的位置会被更新,但不会更新LatLng对象本身。
让我们看看下面的代码:
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...
});https://stackoverflow.com/questions/8632142
复制相似问题