首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在谷歌地图V3中计算两点之间的距离

在谷歌地图V3中计算两点之间的距离
EN

Stack Overflow用户
提问于 2009-10-01 08:18:10
回答 13查看 465.4K关注 0票数 348

如何计算谷歌地图V3中两个标记之间的距离?(类似于distanceFrom函数inV2。)

谢谢..

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2009-10-01 09:07:36

如果你想自己计算,那么你可以使用Haversine公式:

代码语言:javascript
复制
var rad = function(x) {
  return x * Math.PI / 180;
};

var getDistance = function(p1, p2) {
  var R = 6378137; // Earth’s mean radius in meter
  var dLat = rad(p2.lat() - p1.lat());
  var dLong = rad(p2.lng() - p1.lng());
  var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
    Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) *
    Math.sin(dLong / 2) * Math.sin(dLong / 2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  var d = R * c;
  return d; // returns the distance in meter
};
票数 502
EN

Stack Overflow用户

发布于 2011-02-02 20:59:31

实际上,在GMap3中似乎有一种方法。它是google.maps.geometry.spherical名称空间的静态方法。

它将两个LatLng对象作为参数,并将使用默认地球半径6378137米,但如果需要,可以使用自定义值覆盖默认半径。

请确保您包括:

代码语言:javascript
复制
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&v=3&libraries=geometry"></script>

在你的头部。

调用将是:

代码语言:javascript
复制
google.maps.geometry.spherical.computeDistanceBetween (latLngA, latLngB);
票数 317
EN

Stack Overflow用户

发布于 2015-04-07 20:04:38

使用2点的GPS纬度/经度的示例。

代码语言:javascript
复制
var latitude1 = 39.46;
var longitude1 = -0.36;
var latitude2 = 40.40;
var longitude2 = -3.68;

var distance = google.maps.geometry.spherical.computeDistanceBetween(new google.maps.LatLng(latitude1, longitude1), new google.maps.LatLng(latitude2, longitude2));       
票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1502590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档