如何通过叠加层检测谷歌地图上的点击事件?

fre*_*doo 8 google-maps

我的问题是我有一个圆形地图覆盖,但我希望能够通过点击地图设置新的中心来移动圆圈,实际的问题是,当我点击覆盖并调用我的方法'setCenter(叠加, latlng)',我得到未定义的latlang和有效的叠加.

这里有一个示例可以说明问题,如果单击地图绘制多边形,如果单击多边形内部没有绘制新多边形,如果单击地图上的任何其他位置,将绘制多边形 http:// code. google.com/apis/maps/documentation/examples/polygon-simple.html

我希望能够单击多边形并绘制一个新的多边形使它们重叠

谢谢

Dan*_*llo 12

您需要做的就是clickable: falseGPolygon构造函数中设置选项,如下例所示(GPolygonOptions:API Reference):

<!DOCTYPE html>
<html> 
<head> 
   <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
   <title>Google Maps Non Clickable Polygon Demo</title> 
   <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false" 
              type="text/javascript"></script>
</head> 
<body onunload="GUnload()">
   <div id="map" style="width: 450px; height: 300px"></div> 

   <script type="text/javascript"> 
      var map = new GMap2(document.getElementById("map"));
      map.setCenter(new GLatLng(37.4419, -122.1419), 13);

      GEvent.addListener(map, "click", function(overlay, latlng) {
         var lat = latlng.lat();
         var lon = latlng.lng();
         var latOffset = 0.01;
         var lonOffset = 0.01;
         var polygon = new GPolygon([
            new GLatLng(lat, lon - lonOffset),
            new GLatLng(lat + latOffset, lon),
            new GLatLng(lat, lon + lonOffset),
            new GLatLng(lat - latOffset, lon),
            new GLatLng(lat, lon - lonOffset)
         ], "#f33f00", 5, 1, "#ff0000", 0.2, { clickable: false });

         map.addOverlay(polygon);
      });
   </script> 
</body> 
</html>
Run Code Online (Sandbox Code Playgroud)

有证据的截图:

Google地图不可点击的多边形演示

请注意,click(overlay: GOverlay, latlng: GLatLng, overlaylatlng: GLatLng)事件会根据单击的上下文传递不同的参数,以及是否在可单击的叠加层上发生了单击.如果在可单击的叠加层上没有发生单击,则overlay参数为null,并且latlng参数包含单击的点的地理坐标.如果用户单击可单击的叠加层,则overlay参数包含叠加层对象,而overlaylatlng参数包含单击的叠加层的坐标(源:API参考).