Come ottenere marcatori dopo aver chiamato i sensi di marcia in Google Maps API?
-
19-09-2019 - |
Domanda
Ho appena iniziato a lavorare utilizzando Google Maps API di ieri, e cercando di impostare i sensi di marcia per la mia mappa. Il mio problema è: quando chiamo il carico di funzione,
// [...]
gdir = new GDirections(map, directionsPanel);
// [...]
gdir.load("from: " + fromAddress + " to: " + toAddress);
restituisce una mappa i cui marcatori non sono trascinabili. Così, ho bisogno di farli trascinabili per ricalcolare le direzioni, ma non riesco a ottenere gli oggetti marcatori.
Qualcuno sa come posso fare?
Soluzione
È necessario aggiungere un gestore sul GDirections oggetto per il addoverlay evento:
GEvent.addListener(gdir, "addoverlay", onGDirectionsAddOverlay);
Quando il onGDirectionsAddOverlay gestore viene chiamato è possibile scorrere i nuovi marcatori e sostituirli con copie trascinabili:
for (var i = 0; i <= gdir.getNumRoutes(); i++)
{
var originalMarker = gdir.getMarker(i);
latLngs[i] = originalMarker.getLatLng();
icons[i] = originalMarker.getIcon();
newMarkers[i] = new GMarker(latLngs[i], { icon: icons[i], draggable: true, title: 'Kan flyttes' });
map.addOverlay(newMarkers[i]);
// add stuff to your newMarkers[i] drag end event...
// ...
//Bind 'click' event to original markers 'click' event
copyClick(newMarkers[i], originalMarker);
// Now we can remove the original marker safely
map.removeOverlay(originalMarker);
}
È possibile trovare un esempio di lavoro di questo qui ( fonte ).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow