5

你们最近一直在用谷歌地图帮助解决我的一些问题,谢谢你们。

我几乎完成了这个 - 只剩下一个问题。当我在地图上放置第一个标记时,它会捕捉到最近的街道(这很好!)但是当我将第一个标记拖到另一个地方时,方向突然混乱了。并且标记得到混合。

您可以在http://dev.korebogen.dk/gmap/上查看示例

我需要使移动第一个标记(仍在捕捉)成为可能,当我放置第二个标记时,方向首先加载。但为了使第一个标记再次捕捉,我必须加载方向。

我希望你们中的一些人有一个解决方案。提前致谢。

4

2 回答 2

5

Blackpool Community Church Javascript Team 有一个很好的例子直接链接到第四个例子)。也可以查看他们的其他示例。

(免责声明:我不隶属于他们,但从他们的例子中学到了很多关于 GMaps 的知识)

编辑:我怀疑地图事件有点像这样触发(伪代码,对于真实事件名称等,请查看 GMaps 文档):

  • 地图点击:mousedown,mouseup,点击:{设置红色标记}
  • 拖动红色标记:mousedown, dragstart{red marker}, mouseup, click:{set marker b} (mousedown+mouseup), dragend
  • 两个标记都设置了吗?是的,获取路线

我的建议是:在 red-marker 和 marker-A dragstart 函数中,设置一些标志“拖动标记”,在 dragend 函数中重置它;在设置标记 B 函数中,仅当我们当前没有拖动某些东西时才设置标记(未设置标志)。

于 2009-04-30T07:48:57.263 回答
2

我之前给你的代码监听了前两次点击,并为每次点击添加了一个标记。问题是,当您拖动第一个标记时,它会再次调用“单击”事件 - 从而在同一位置添加另一个标记。

幸运的是,click 事件让您知道是否单击了叠加层。因此,如果覆盖为空,则仅执行添加新标记的代码。请注意,叠加不是布尔值。

var listener = GEvent.addListener(map, "click", function(overlay, latlng) {
  if (overlay == null) {
    // code to add new marker
  }
});
于 2009-04-30T17:32:51.697 回答