首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拖动后的Google标记位置

拖动后的Google标记位置
EN

Stack Overflow用户
提问于 2011-12-25 23:29:18
回答 1查看 8.3K关注 0票数 2

在这里,我可能忽略了JavaScript中的一些基本定律,但我有一个问题,关于拖放Google标记后的最近位置。

我正在成功地将标记添加到映射中,并将这些添加的标记分配给变量,或者更准确地说,我使用jQuery将这些标记添加到映射的div元素的data中,使用jQuery.data()

现在,当我把这些标记拖到地图上时,我遇到了一个问题。我了解dragend事件,以及如何激发/捕获它和它的数据,包括拖动后的新的锁定位置。尽管如此,我的理解是JavaScript中的对象是通过引用传递的,所以我不能理解为什么元素中存储的标记引用的位置不被更新以自动反映新的位置?

我想可能是以下几种之一:

传递到元素的problem.

  • Google
  1. 对象是复制的,而不是通过引用传递的,因此jQuery
  2. 映射不会自动更新其标记的最近位置,存储在变量或data节点中,因此也会出现谷歌地图问题。
  3. I必须亲自启动dragend事件才能更新位置(听起来像是一个奇怪的解决方案)。

我基本上是在询问这个问题,看看我是否需要把它作为一个问题记录到任何地方,或者我是否只是个白痴。任何来自其他强硬的Google的输入都会在这里帮助我。

提前干杯。

EN

回答 1

Stack Overflow用户

发布于 2012-01-03 09:44:41

我看到你已经解决了你的问题,但也许它对其他人阅读这个问题是有帮助的。

Google在拖放后用一个新的LatLng对象覆盖标记的位置。如果将标记的位置( LatLng-Object )存储在变量中,则该变量保存对先前定义的LatLng对象的引用。在拖放之后,标记的位置会被更新,但不会更新LatLng对象本身。

让我们看看下面的代码:

代码语言:javascript
复制
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...
});
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8632142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档