[英]Google Maps - How to get the distance between two point in metre?
I have these coordinate :我有这些坐标:
(45.463688, 9.18814)
(46.0438317, 9.75936230000002)
and I need (trought Google API V3, I think) to get the distance between those 2 points in metre.我需要(我认为是 Google API V3)以米为单位获得这两个点之间的距离。 How can I do it?我该怎么做?
If you're looking to use the v3 google maps API, here is a function to use: Note: you must add &libraries=geometry
to your script source如果您想使用 v3 谷歌地图 API,这里有一个可以使用的函数:注意:您必须将&libraries=geometry
添加到您的脚本源中
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script>
<script>
var p1 = new google.maps.LatLng(45.463688, 9.18814);
var p2 = new google.maps.LatLng(46.0438317, 9.75936230000002);
alert(calcDistance(p1, p2));
//calculates distance between two points in km's
function calcDistance(p1, p2) {
return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 1000).toFixed(2);
}
</script>
I think you could do without any specific API, and calculate distance with plain Javascript:我认为您可以在没有任何特定 API 的情况下进行,并使用纯 Javascript 计算距离:
This site has good info about geographical calculations and Javascript sample for distance calculation.这个站点有关于地理计算的很好的信息和用于距离计算的 Javascript 示例。
Ok, quick glance at Google API page and it seems, you could do it by:好的,快速浏览一下 Google API 页面,您似乎可以通过以下方式完成:
http://www.csgnetwork.com/gpsdistcalc.html http://www.csgnetwork.com/gpsdistcalc.html
Has nothing to do with coding btw与编码无关 btw
EDIT if you're looking for some code如果您正在寻找一些代码,请编辑
Calculate distance between two points in google maps V3 计算谷歌地图V3中两点之间的距离
This is primarily done with math outside of the google api, so you shouldn't need to use the API for anything other than finding the correct coordinates.这主要是通过 google api 之外的数学完成的,因此除了找到正确的坐标之外,您不需要使用该 API 进行任何其他操作。
Knowing that, here's a link to a previously answered question relating to Javascript.知道这一点,这里有一个链接,指向先前回答的与 Javascript 相关的问题。
Calculate distance between 2 GPS coordinates 计算 2 个 GPS 坐标之间的距离
Try this尝试这个
CLLocationCoordinate2D coord1;
coord1.latitude = 45.463688;
coord1.longitude = 9.18814;
CLLocation *loc1 = [[[CLLocation alloc] initWithLatitude:coord1.latitude longitude:coord1.longitude] autorelease];
CLLocationCoordinate2D coord2;
coord2.latitude = 46.0438317;
coord2.longitude = 9.75936230000002;
CLLocation *loc2 = [[[CLLocation alloc] initWithLatitude:46.0438317 longitude:9.75936230000002] autorelease];
CLLocationDistance d1 = [loc1 distanceFromLocation:loc2];
Try this:尝试这个:
const const toRadians = (val) => {
return val * Math.PI / 180;
}
const toDegrees = (val) => {
return val * 180 / Math.PI;
}
// Calculate a point winthin a circle
// circle ={center:LatLong, radius: number} // in metres
const pointInsideCircle = (point, circle) => {
let center = circle.center;
let distance = distanceBetween(point, center);
//alert(distance);
return distance < circle.radius;
};
const distanceBetween = (point1, point2) => {
//debugger;
var R = 6371e3; // metres
var φ1 = toRadians(point1.latitude);
var φ2 = toRadians(point2.latitude);
var Δφ = toRadians(point2.latitude - point1.latitude);
var Δλ = toRadians(point2.longitude - point1.longitude);
var a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
Math.cos(φ1) * Math.cos(φ2) *
Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return R * c;
}
References: http://www.movable-type.co.uk/scripts/latlong.html参考资料: http : //www.movable-type.co.uk/scripts/latlong.html
Are you referring to distance as in length of the entire path or you want to know only the displacement (straight line distance)?您指的是整个路径长度的距离,还是只想知道位移(直线距离)? I see no one is pointing the difference between distance and displacement here.我看没有人在这里指出距离和位移之间的区别。 For distance calculate each route point given by JSON/XML data, as for displacement there is a built-in solution using Spherical
class.对于距离计算由 JSON/XML 数据给出的每个路线点,对于位移,有一个使用Spherical
类的内置解决方案。
Are you referring to distance as in length of the entire path or you want to know only the displacement (straight line distance)?您指的是整个路径长度的距离,还是只想知道位移(直线距离)? I see no one is pointing the difference between distance and displacement here.我看没有人在这里指出距离和位移之间的区别。 For distance calculate each route point given by JSON/XML data, as for displacement there is a built-in solution using Spherical
class.对于距离计算由 JSON/XML 数据给出的每个路线点,对于位移,有一个使用Spherical
类的内置解决方案。 The idea is if your are referring to distance then you just use the computeDistanceBetween
on each path point and concatenate it.这个想法是,如果您指的是距离,那么您只需在每个路径点上使用computeDistanceBetween
并将其连接起来。
//calculates distance between two points in km's
function calcDistance(p1, p2) {
return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 1000).toFixed(2);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.