简体   繁体   English

谷歌地图 - 如何以米为单位获得两点之间的距离?

[英]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 页面,您似乎可以通过以下方式完成:

  1. Call DirectionsService().route() to get DirectionsResult with routes调用 DirectionsService().route() 以获取带有路线的DirectionsResult
  2. For one or each route go through its legs property and calculate sum of distances对于一条或每条路线,通过它的legs属性并计算距离总和

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.

相关问题 如何使用JavaScript在Google地图上获得两个形状之间的最短距离? - How to get shortest distance between two shapes on Google Maps, using JavaScript? 两个位置之间的距离 - Google地图 - Distance between two locations - Google Maps 点和线之间的最短距离(Google Maps API问题?) - Shortest distance between a point and a line (Google Maps API issue?) 获取Google Maps标记之间的距离(以像素为单位)或“可视距离” - Get distance between Google Maps markers in pixels or “visual distance” 两点之间的Google Maps V3距离-不同的值 - Google Maps V3 distance between two points - different values 计算Google Maps for Ionic 2中两点之间的距离 - Calculating distance between two points in Google Maps for Ionic 2 两点之间的距离谷歌地图a是未定义的api v3 - distance between two points google maps a is undefined api v3 是否可以计算angular-google-maps中两个标记之间的距离? - Is it possible to calculate distance between two markers in angular-google-maps? 如何在谷歌地图 api 中获得“公路距离”? - How to get the “distance by road” in google maps api? 如何使用Google Maps API计算两个以上的点之间的距离? - How to calculate distance between more than two points with google maps api?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM