Est-il possible d'envoyer deux points lat lat à google pour calculer la distance entre les deux?établir des distances entre deux points en utilisant google maps api?
Répondre
il y a une fonction pratique
http://code.google.com/apis/maps/documentation/reference.html#GLatLng.distanceFrom
créer essentiellement 2 objets GlatLng puis utilisez la méthode ci-dessus
Ce que vous recherchez est le Haversine formula. Vous n'avez pas besoin de Google Maps pour cela, vous pouvez le faire séparément. Il y a un script pour le faire (en JavaScript) here.
Ses nombreuses années que je l'ai fait, mais vous pouvez utiliser le Great Circle Distance
Non, mais
vous pouvez utiliser la formule de Vincenty, qui modélise la forme de la Terre. Il est disponible en Javascript here.
Un assez facile à analyser la page Web est (par exemple): http://boulter.com/gps/distance/?from=51.5329855+-0.1303506&to=40.757584+-73.985642&units=m
Pour les personnes qui veulent seulement une mesure rapide de la distance, consultez this gadget. Cependant, il utilise uniquement le calcul du grand cercle.
Comme le fait remarquer Rob, Google ont ajouté, mais ils utilisent encore que la formule du grand cercle, qui peut être inexact par 1/300.
Oui Google peut faire
est ici un morceau de script java qui s'est la distance en kms pour deux points
function initialize() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map_canvas")); map.setCenter(new GLatLng(52.6345701, -1.1294433), 13); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); geocoder = new GClientGeocoder(); // NR14 7PZ var loc1 = new GLatLng(52.5773139, 1.3712427); // NR32 1TB var loc2 = new GLatLng(52.4788314, 1.7577444); alert(loc2.distanceFrom(loc1)/1000); } }
et la distance cal en C#:
// this returns the distance in miles. for km multiply result: * 1.609344
public static double CalculateDistance(double lat1, double lon1, double lat2, double lon2)
{
double t = lon1 - lon2;
double distance = Math.Sin(Degree2Radius(lat1)) * Math.Sin(Degree2Radius(lat2)) + Math.Cos(Degree2Radius(lat1)) * Math.Cos(Degree2Radius(lat2)) * Math.Cos(Degree2Radius(t));
distance = Math.Acos(distance);
distance = Radius2Degree(distance);
distance = distance * 60 * 1.1515;
return distance;
}
private static double Degree2Radius(double deg)
{
return (deg * Math.PI/180.0);
}
private static double Radius2Degree(double rad)
{
return rad/Math.PI * 180.0;
}
Si vous voulez juste obtenir la distance en nombre, essayez chose comme ça.
function InitDistances() {
var startLocation = new GLatLng(startLat, startLon);
var endLocation = new GLatLng(endLat, endLon);
var dist = startLocation .distanceFrom(endLocation);
// Convert distance to miles with two decimal points precision
return (dist/1609.344).toFixed(2);
}
Si vous cherchez à utiliser l'API de cartes v3 Google, voici une fonction que j'utilise: Note: vous devez ajouter &libraries=geometry
à votre source de script
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script>
maintenant la fonction:
//calculates distance between two points in km's
function calcDistance(p1, p2){
return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2)/1000).toFixed(2);
}
Je veux la distance de la route pas la distance géométrique? – codepk
Aller directement à [@ réponse de SunnyD ci-dessous] (http://stackoverflow.com/questions/506747/working-out-distances-between-two-points-using-google -maps-api/6419141 # 6419141) pour la réponse Google Maps API V3. – Josh