2010-03-21 12 views
7

Il mio problema è che ho una sovrapposizione della mappa circolare, ma voglio essere in grado di spostare il cerchio facendo clic sulla mappa per impostare il nuovo centro, il vero problema è che quando clicco sull'overlay e chiamo il metodo 'setCenter (overlay, latlng) ', ottengo un latlang indefinito e una sovrapposizione valida.Come posso rilevare un evento click su una mappa google attraverso un overlay?

Ecco un esempio che può illustrare il problema, se si sceglie la mappa un poligono viene disegnato e se si fa clic all'interno del poligono non nuovo poligono è tratto, se si fa clic in qualsiasi altro luogo sulla mappa un poligono viene disegnato http://code.google.com/apis/maps/documentation/examples/polygon-simple.html

voglio essere in grado di fare clic sul poligono e disegnare una nuova che li faccia sovrappongono

grazie

risposta

12

Tutto quello che dovete fare è impostare l'opzione clickable: false nel costruttore GPolygon, come nell'esempio seguente esempio (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> 

Schermata con evidenza:

Google Maps Non Clickable Polygon Demo

Nota che l'evento click(overlay: GOverlay, latlng: GLatLng, overlaylatlng: GLatLng) passa gli argomenti diversi in base al contesto del click, e se il clic si è verificato su un overlay cliccabile . Se il clic non si verifica su una sovrapposizione cliccabile, l'argomento overlay è null e l'argomento latlng contiene le coordinate geografiche del punto su cui è stato fatto clic. Se l'utente fa clic su una sovrapposizione cliccabile, l'argomento overlay contiene l'oggetto overlay, mentre l'argomento overlaylatlng contiene le coordinate della sovrapposizione cliccata (Source: API Reference).

Problemi correlati