捕捉到最近的街道

时间:2009-04-30 07:36:03

标签: google-maps driving-directions

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

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

您可以在http://dev.korebogen.dk/gmap/

上看到示例

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

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

2 个答案:

答案 0 :(得分:5)

布莱克浦社区教会Javascript团队有一个excellent example of exactly thisdirect link to the fourth example)。看看他们的其他例子。

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

编辑: 我怀疑地图事件有点像这样(伪代码,真实事件名称等等。检查GMaps文档):

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

我建议:在red-marker和marker-a dragstart函数中,设置一些标记“拖动标记”,将其重置为dragend函数;在Set marker B功能中,如果我们当前没有拖动某些东西(没有设置标志),则只设置标记。

答案 1 :(得分:2)

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

幸运的是,click event可让您知道是否点击了叠加层。因此,如果overlay为null,则仅执行添加新标记的代码。 请注意,overlay不是布尔值。

var listener = GEvent.addListener(map, "click", function(overlay, latlng) {
  if (overlay == null) {
    // code to add new marker
  }
});