适用于我的网站的简单 Google 地图距离工具

发布于 2024-08-23 03:02:22 字数 1539 浏览 5 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一笔一画续写前缘 2024-08-30 03:02:22

由于 Google 地图使用纬度和经度,因此您必须转换为您首选的测量系统才能获得直线距离。

这里使用公里

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;

但是,通过 Google Maps v2 API,您可以从路线获取方向数据。查看 GDirections 以获取 API 参考。我在一个项目中使用过它,效果很好。

Since Google Maps uses latitude and longitude, you have to do a conversion to your preferred measure system to get the distance as the crow flies.

Here's one that uses kilometers;

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;

However, from the Google Maps v2 API you can get directional data from routes. Look into GDirections for the API reference. I've used it in one project, and it works fine.

为人所爱 2024-08-30 03:02:22

不知道它是否有帮助,但 Wolfram 允许您查询距离(以及其他功能),例如:

distance from Los Angeles to New York

给您这个 answer

但是您也可以查询坐标,因此也许您可以通过用户单击地图并查询以下内容来获取坐标

distance from 40.34N 74.00W to 40.34N 12.00W

:给你这个结果< /a>

Don't know if it may helps, but wolfram allows you to query distances (among other features), like:

distance from Los Angeles to New York

gives you this answer

But you can also query for coordinates, so maybe you can get the coordinates by users click on your map and query something like:

distance from 40.34N 74.00W to 40.34N 12.00W

Which gives you this result

坏尐絯℡ 2024-08-30 03:02:22

您也可以使用此 MeasureTool for Google Maps

https://github.com/zhenyanghua/MeasureTool-GoogleMaps -V3

例如,引用geometry 库,然后引用varmeasureTool = new MeasureTool(map);

这是一个实时演示

You could as well this MeasureTool for Google Maps

https://github.com/zhenyanghua/MeasureTool-GoogleMaps-V3

For example, reference the geometry library and then var measureTool = new MeasureTool(map);.

Here is a live demo

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文