Google maps montrant l'itinéraire et la distance entre 2 lieux
-
22-07-2019 - |
Question
Je travaille sur un site Web de profil qui indique l'emplacement des personnes qui utilisent Google Maps.
J'ai implémenté Google Maps et il indique désormais où se trouve la personne que vous consultez et où vous habitez.
Le code est ici:
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);
}
}
);
}
}
Toutefois, il ne modifie pas le niveau de zoom lorsque les deux lieux sont si éloignés qu’ils ne tiennent pas sur la carte. Je ne sais pas comment résoudre ce problème.
La prochaine étape consiste à indiquer à la carte un itinéraire visuel entre les deux points et leur distance en suivant cet itinéraire. Je l'ai essayée sur le site Google Maps et je sais qu'ils disposent de cette fonctionnalité. Je ne trouve aucune documentation sur la manière de le mettre en œuvre.
Ou serait-il préférable de créer un lien hypertexte menant à Google Maps et contenant une page préparée? Cela aussi, je ne sais pas comment.
La solution
Je ne l'ai jamais fait, mais vu GDirections dans l'API:
http://code.google.com/apis/maps /documentation/reference.html#GDirections
Loooks aime ce que vous recherchez.
Autres conseils
Ajouter tous les points à un polygone. Dans le polygone, récupérez les LatLngBounds, qui peuvent être utilisés pour obtenir le niveau de 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();
}
C'est dans l'API. vous pouvez le trouver avec
route site:http://code.google.com/apis/maps
Voici une page, par exemple, qui indique "Indications du conducteur". dans une superposition avec Flash. L'API est un peu différent lorsque vous faites des cartes en dehors de Flash, mais c'est le même code de base. http://code.google.com/apis/maps/documentation/ flash / services.html
Comme je travaillais davantage avec MapQuest, je commence tout juste à utiliser l'API Google Maps.