2013-04-03 14 views
64

Zaskakująco trudno jest znaleźć bardzo prosty przykład dodawania znaczników do mapy Google, gdy użytkownik kliknie na mapę.Dodaj znacznik do mapy Google na kliknij

Rozglądałem się w ciągu ostatnich kilku godzin i sprawdziłem dokumentację interfejsu API Map Google. Byłbym wdzięczny za pomoc!

Odpowiedz

122

Po dalszych badaniach udało mi się znaleźć rozwiązanie.

google.maps.event.addListener(map, 'click', function(event) { 
    placeMarker(event.latLng); 
}); 

function placeMarker(location) { 
    var marker = new google.maps.Marker({ 
     position: location, 
     map: map 
    }); 
} 
+1

możemy sprawić, że użytkownik może dodać tylko jeden raz? i przesunąć znacznik? –

+0

Awesome, pracował dla mnie. – Pupil

16

Właściwie jest to udokumentowane cecha, i można je znaleźć here

// This event listener calls addMarker() when the map is clicked. 
    google.maps.event.addListener(map, 'click', function(e) { 
    placeMarker(e.latLng, map); 
    }); 

    function placeMarker(position, map) { 
    var marker = new google.maps.Marker({ 
     position: position, 
     map: map 
    }); 
    map.panTo(position); 
    } 
6

Obecnie metoda, aby dodać słuchacza na mapie byłoby

map.addListener('click', function(e) { 
    placeMarker(e.latLng, map); 
}); 

I nie

google.maps.event.addListener(map, 'click', function(e) { 
    placeMarker(e.latLng, map); 
}); 

Reference

2

@Chaibi Alaa, Możesz ustawić znacznik za pierwszym kliknięciem, a następnie zmienić pozycję przy kolejnych kliknięciach.

var marker; 

google.maps.event.addListener(map, 'click', function(event) { 

    placeMarker(event.latLng); 

}); 

function placeMarker(location) { 

if (marker == null) 
{ 
    marker = new google.maps.Marker({ 
     position: location, 
     map: map 
    }); } else { marker.setPosition(location); } } 
19

W 2017 roku, rozwiązaniem jest:

map.addListener('click', function(e) { 
    placeMarker(e.latLng, map); 
}); 

function placeMarker(position, map) { 
    var marker = new google.maps.Marker({ 
     position: position, 
     map: map 
    }); 
    map.panTo(position); 
} 
Powiązane problemy