Google Maps mostra il percorso e la distanza tra 2 località
-
22-07-2019 - |
Domanda
Sto lavorando su un sito Web di profilo che mostra la posizione delle persone che utilizzano Google Maps.
Ho implementato google maps e ora mostra dove vive la persona che stai visualizzando e dove vivi.
Il codice è qui:
var map = null;
var geocoder = null;
function initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GScaleControl());
map.addControl(new GMapTypeControl());
geocoder = new GClientGeocoder();
}
}
function showAddresses(address1,address2) {
if (geocoder) {
geocoder.getLatLng(
address1,
function(point) {
if (!point) {
alert(address1 + " not found");
} else {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
marker.openInfoWindowHtml(address1);
}
}
);
geocoder.getLatLng(
address2,
function(point) {
if (!point) {
alert(address2 + " not found");
} else {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
}
}
);
}
}
Ciò che non fa, tuttavia, è modificare il livello di zoom quando i 2 posti sono così distanti da non stare insieme sulla mappa. Non so come risolverlo.
Il prossimo passo è che voglio che la mappa mostri un percorso visivo tra i due punti e la loro distanza quando seguo quel percorso. L'ho provato sul sito di Google Maps e so che hanno questa funzionalità. Non riesco proprio a trovare alcuna documentazione su come implementarlo.
O sarebbe meglio solo creare un collegamento ipertestuale che va su google maps e ti dà una pagina preparata? Anche quello non so come.
Soluzione
Non l'ho mai fatto, ma ho visto GDirection nell'API:
http://code.google.com/apis/maps /documentation/reference.html#GDirections
Sembra quello che stai cercando.
Altri suggerimenti
Aggiungi tutti i punti a un poligono. Dal poligono, ottieni LatLngBounds, che può essere utilizzato per derivare il livello di zoom.
private function setMapZoomLevelBasedOnPlottedPoints(polygonPoints:Array):void
{
var pointBounds:LatLngBounds = getLatLongBounds(polygonPoints);
_map.setCenter(pointBounds.getCenter());
_map.setZoom(_map.getBoundsZoomLevel(pointBounds) - 1);
}
private function getLatLongBounds(polygonPoints:Array):LatLngBounds
{
for(var i:Number; i < polygonPoints; i++)
{
polygonPoints.push(polygonPoints[i] as LatLong);
}
var polygon:IPolygon = new Polygon(polygonPoints);
return polygon.getLatLngBounds();
}
È nell'API. puoi trovarlo con
route site:http://code.google.com/apis/maps
Ecco una pagina, ad esempio, che mostra " indicazioni stradali del conducente " in una sovrapposizione con Flash. L'API è leggermente diversa quando si eseguono mappe al di fuori di Flash, ma è lo stesso codice di base. http://code.google.com/apis/maps/documentation/ flash / services.html
Ho lavorato di più con MapQuest, quindi sto solo entrando nell'API di Google Maps.