2010-03-21 14 views
7

Mój problem polega na tym, że mam nakładkę z mapą koła, ale chcę móc przesuwać kółko, klikając mapę, aby ustawić nowe centrum, faktycznym problemem jest to, że po kliknięciu nakładki i wywołaniu mojej metody "setCenter" (overlay, latlng) ", otrzymuję niezdefiniowany latlang i prawidłową nakładkę.Jak wykryć zdarzenie kliknięcia na mapie google za pomocą nakładki?

tutaj jest przykładem, że można zilustrować problem, jeśli klikniesz mapę wielokąt jest sporządzony i jeśli klikniesz wewnątrz wielokąta żaden nowy wielokąt jest rysowane, jeśli klikniesz gdziekolwiek indziej na mapie wielokąt jest sporządzony http://code.google.com/apis/maps/documentation/examples/polygon-simple.html

Chcę móc kliknąć wielokąt i narysuj nowy czyniąc je pokrywać

dzięki

Odpowiedz

12

Wszystko, co musisz zrobić, to ustawić opcję w konstruktorze GPolygonclickable: false, jak w poniższym przykładzie przykład (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> 

Zrzut ekranu z dowodów:

Google Maps Non Clickable Polygon Demo

nocie, że zdarzenie click(overlay: GOverlay, latlng: GLatLng, overlaylatlng: GLatLng) przechodzi różne argumenty oparte na kontekście kliknięcie, a czy kliknięcie wystąpił w klikalne nakładki . Jeśli kliknięcie nie występuje w klikalnej nakładce, argument jest argentyński i zawiera współrzędne geograficzne punktu, który został kliknięty. Jeśli użytkownik kliknie nakładkę, która jest klikalna, argument overlay zawiera obiekt nakładki, natomiast argument overlaylatlng zawiera współrzędne klikniętej nakładki (Source: API Reference).

Powiązane problemy