2010-03-21 28 views
7

我的問題是我有一個圓形貼圖覆蓋,但我希望能夠通過單擊地圖設置新的中心來移動圓形,實際問題是,當我單擊覆蓋並調用我的方法'setCenter(覆蓋,latlng)',我得到未定義的拉特朗和一個有效的覆蓋。如何通過疊加層檢測谷歌地圖上的點擊事件?

這裏是一個可以說明問題的例子,如果單擊地圖時繪製了多邊形,並且如果在多邊形內單擊,則不繪製新多邊形,如果單擊地圖上的其他任何地方繪製多邊形 http://code.google.com/apis/maps/documentation/examples/polygon-simple.html

我希望能夠點擊多邊形並繪製一個新的使其重疊

感謝

回答

12

所有你需要做的是設置在GPolygon構造的clickable: false選項,如下面的例子(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> 

截圖證據:

Google Maps Non Clickable Polygon Demo

注意,click(overlay: GOverlay, latlng: GLatLng, overlaylatlng: GLatLng)事件傳遞基於點擊的情況下不同的參數,然後單擊是否發生在一個可點擊的疊加。如果點擊未出現在可點擊的疊加層上,則參數overlaynulllatlng參數包含被點擊的點的地理座標。如果用戶單擊可點擊的疊加層,則參數將包含疊加層對象,而參數overlaylatlng將包含所單擊的疊加層的座標(Source: API Reference)。

相關問題