Entfernung zwichen zwei Punkten auf der Erde (Javascript)?
Ich erstelle momentan eine Website. Gibt es eine Möglichkeit die Entfernung zwichen zwei Punkten auszurechnen (Luftlinie oder Wege) . Gegeben ist die Addresse. Ist es möglich mit Javascript auf die Google Maps API zuzugreifen und so die Entfernung auszurechenen der gibt es eine andere möglichkeit?
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
JavaScript
Ich habe dir dieses Beispiel http://www.codexworld.com/distance-between-two-addresses-google-maps-api-php/ von PHP nach JavaScript übersetzt. (jQuery wird auch benötigt):
var getDistance = (function() {
var deg2rad = function(angle) {
return angle * 0.017453292519943295;
}
var rad2deg = function(angle) {
return angle * 57.29577951308232;
}
return function(addressFrom, addressTo) {
addressFrom = addressFrom.replace(' ', '+', addressFrom);
addressTo = addressTo.replace(' ', '+', addressTo);
return $.when(
$.get('http://maps.google.com/maps/api/geocode/json?address=' + addressFrom + '&sensor=false'),
$.get('http://maps.google.com/maps/api/geocode/json?address=' + addressTo + '&sensor=false')
).then(function(f, t) {
var latitudeFrom = f[0].results[0].geometry.location.lat;
var longitudeFrom = f[0].results[0].geometry.location.lng;
var latitudeTo = t[0].results[0].geometry.location.lat;
var longitudeTo = t[0].results[0].geometry.location.lng;
var theta = longitudeFrom - longitudeTo;
var dist = Math.sin(deg2rad(latitudeFrom)) * Math.sin(deg2rad(latitudeTo)) +
Math.cos(deg2rad(latitudeFrom)) * Math.cos(deg2rad(latitudeTo)) * Math.cos(deg2rad(theta));
dist = Math.acos(dist);
dist = rad2deg(dist);
var miles = dist * 60 * 1.1515;
return miles * 1.609344;
});
}
})();
Beispielaufruf:
getDistance("New York", "Berlin").then(function(dist) {
console.log(dist + " Kilometer");
});
Ergebnis:
6384.690965819694 Kilometer