Ecco la demo di JSFiddle . Nell'API di Google Maps V3 è piuttosto semplice tenere traccia della latitudine e dell'estensione di un marker trascinabile. Cominciamo con i seguenti HTML e CSS come base.
<div id='map_canvas'></div>
<div id="current">Nothing yet...</div>
#map_canvas{
width: 400px;
height: 300px;
}
#current{
padding-top: 25px;
}
Ecco il nostro JavaScript iniziale che inizializza la mappa di Google. Creiamo un marker che vogliamo trascinare e impostiamo la sua proprietà trascinabile su true. Ovviamente tieni presente che dovrebbe essere allegato a un evento di onload della tua finestra affinché possa essere caricato, ma salterò al codice:
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 1,
center: new google.maps.LatLng(35.137879, -82.836914),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var myMarker = new google.maps.Marker({
position: new google.maps.LatLng(47.651968, 9.478485),
draggable: true
});
Qui alleghiamo due eventi dragstart
per tracciare l'inizio del trascinamento e dragend
per trascinare quando il marcatore smette di essere trascinato, e il modo in cui lo colleghiamo è quello di usarlo google.maps.event.addListener
. Quello che stiamo facendo qui è impostare il current
contenuto del div quando il marker viene trascinato e quindi impostare lat e lng del marker quando il trascinamento si interrompe. L'evento del mouse di Google ha un nome di proprietà "latlng" che restituisce l'oggetto "google.maps.LatLng" quando l'evento si attiva. Quindi, ciò che stiamo facendo qui è fondamentalmente utilizzare l'identificatore per questo listener che viene restituito da google.maps.event.addListener
e ottenere la proprietà latLng
per estrarre la posizione corrente del dragend. Una volta ottenuto quel Lat Lng quando il trascinamento si interrompe, verrà visualizzato nel tuo current
div:
google.maps.event.addListener(myMarker, 'dragend', function(evt){
document.getElementById('current').innerHTML = '<p>Marker dropped: Current Lat: ' + evt.latLng.lat().toFixed(3) + ' Current Lng: ' + evt.latLng.lng().toFixed(3) + '</p>';
});
google.maps.event.addListener(myMarker, 'dragstart', function(evt){
document.getElementById('current').innerHTML = '<p>Currently dragging marker...</p>';
});
Infine, centreremo il nostro indicatore e lo visualizzeremo sulla mappa:
map.setCenter(myMarker.position);
myMarker.setMap(map);
Fammi sapere se hai domande sulla mia risposta.