检测航点,点击Google地图v3中的DirectionsRenderer标记

时间:2011-07-08 20:47:09

标签: javascript google-maps-api-3

在Google Maps API v3中,如何从DirectionsRenderer获取航点标记,以便向其添加点击事件(例如删除菜单)。

4 个答案:

答案 0 :(得分:5)

直到找到一个更好的解决方案是我已经采用的工作。基本思路是将自己的标记放在路标之上,并将点击事件监听器绑定到标记。我做了一个jsfiddle来证明这个想法。

它绝对不是完美的,但使用自定义图标而不是默认标记,它看起来很自然。

答案 1 :(得分:0)

答案 2 :(得分:0)

另一种不涉及在地图上放置新标记的方法是检测地图窗口小部件上的DOM点击事件。这个想法很简单。检测到点击时:

  1. 使用MapCanvasProjection
  2. 将所有航点的LatLng坐标转换为屏幕上的坐标(或实际上,在地图窗口小部件上)
  3. 计算航点和点击点之间的距离。如果用户点击足够靠近任何航点(距离低于航点图标的半径) - 显示该点的菜单
  4. 我编码complete solution in java for gwt。将它翻译成javascript应该非常简单。

答案 3 :(得分:0)

您可以在标记上创建事件,并为其分配较高的z索引,以使其覆盖航点,而不是在航点上创建click事件。

  1. 创建单个标记并分配较高的z-index
    marker = new google.maps.Marker({
      map:map,
      position: new google.maps.LatLng(1.99, 2.99),
    });
    marker.setZIndex(999);
  1. 将侦听器添加到标记
google.maps.event.addListener(marker, 'click', function(event){
      alert(marker.title);
    }); 
  1. 现在创建航路点。