2010-03-21 6 views
7

Mein Problem ist, dass ich ein Kreiskarten-Overlay habe, aber ich möchte den Kreis verschieben können, indem ich auf die Karte klicke, um das neue Zentrum zu setzen. Das eigentliche Problem ist, dass wenn ich auf das Overlay klicke und meine Methode 'setCenter (overlay, latlng) ', bekomme ich undefined latlang und ein gültiges Overlay.Wie kann ich ein Klickereignis in einer Google-Karte über ein Overlay erkennen?

Hier ist ein Beispiel, das das Problem veranschaulichen kann: Wenn Sie auf die Karte klicken, wird ein Polygon gezeichnet und wenn Sie innerhalb des Polygons klicken, wird kein neues Polygon gezeichnet. Wenn Sie irgendwo anders auf der Karte klicken, wird ein Polygon gezeichnet http://code.google.com/apis/maps/documentation/examples/polygon-simple.html

ich möchte das Polygon in der Lage sein zu klicken und eine neue ziehen so dass sie sich überlappen

dank

Antwort

12

Alles was Sie tun müssen, ist die clickable: false Option im GPolygon Konstruktor gesetzt, wie in der folgenden Beispiel (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> 

Screenshot mit Beweis:

Google Maps Non Clickable Polygon Demo

Beachten Sie, dass die click(overlay: GOverlay, latlng: GLatLng, overlaylatlng: GLatLng) Ereignis unterschiedliche Argumente geht auf den Kontext des Klicks basiert, und ob der Klick auf einen klickbaren Overlay aufgetreten . Wenn der Klick in einem anklickbaren Overlay nicht erfolgt, lautet das Argument overlaynull und das Argument latlng enthält die geografischen Koordinaten des angeklickten Punkts. Wenn der Benutzer auf ein Overlay klickt, das anklickbar ist, enthält das Argument overlay das Overlay-Objekt, während das overlaylatlng-Argument die Koordinaten des angeklickten Overlays (Source: API Reference) enthält.

Verwandte Themen