Hi, how to calculate the distance from two langitude e latitude points.
i would to calculate the distance from my geo position and a set of points.
what is the best way to calculate this?
Thank you!
Hi, how to calculate the distance from two langitude e latitude points.
i would to calculate the distance from my geo position and a set of points.
what is the best way to calculate this?
Thank you!
i found this method of google api v3
var myLatLng1 = { lat: 40.634315, lng: 14.602552 };
var myLatLng2 = {lat: 40.04215, lng: 14.102552 };
google.maps.geometry.spherical.computeDistanceBetween(myLatLng1, myLatLng2);
but return this error
Uncaught (in promise): TypeError: Cannot read property 'spherical' of undefined
google.maps.geometry.spherical.computeDistanceBetween(myPos, new google.maps.LatLng(myLatLng1, myLatLng2));
thanks yes i know but how to import geometry spherical object?
Unhandled Promise rejection: Cannot read property 'spherical' of undefined ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Cannot read property 'spherical' of undefined
how to import google.maps.geometry?
do you use
declare var google: any;
?
yes i delcare var google but i can’t import geometry spherical object.
Any solution?
Maybe this functions can help to get an approach. You should translate them into TypeScript, or ES6.
function degToRad(n)
{
return n * Math.PI / 180;
}
function radToDeg(n)
{
return n * 180 / Math.PI;
}
function getDistance(lat1, lon1, lat2, lon2, mode)
{
var R = 6371; // Earth radius in km
switch(mode)
{
case 'spherical':
default:
var dLon = degToRad(lon2 - lon1);
lat1 = degToRad(lat1);
lat2 = degToRad(lat2);
var d = Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(dLon)) * R;
break;
case 'haversine':
var dLat = degToRad(lat2 - lat1);
var dLon = degToRad(lon2 - lon1);
lat1 = degToRad(lat1);
lat2 = degToRad(lat2);
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c;
break;
case 'rectangle':
var x = degToRad(lon2 - lon1) * Math.cos(degToRad(lat1 + lat2) / 2);
var y = degToRad(lat2 - lat1);
var d = Math.sqrt(x * x + y * y) * R;
break;
}
return d;
}
You need to add google map geometry library in index.html file
something similar to this <script src="http://maps.google.com/maps/api/js?key=YOU_GOOGLE_MAP_KEY&libraries=geometry"></script>