使用谷歌地图v3验证两点(纬度或地址)服务器端之间的路线距离
Posted
技术标签:
【中文标题】使用谷歌地图v3验证两点(纬度或地址)服务器端之间的路线距离【英文标题】:validate route distance beetween two point (lat/lng or address) server side with google maps v3 【发布时间】:2014-07-22 13:10:38 【问题描述】:我们正在开发一个从客户端(浏览器)接收数据的网络服务(带有 php 的 SOAP):
起点(纬度/经度) 终点(纬度/经度) 起点和终点之间的路线距离;地理编码和路线距离由谷歌地图 v3 客户端计算。
通过从客户端接收数据,服务器必须重新计算起点和终点之间的距离,以验证距离本身,以确保它没有被操纵。
在许可方面,是否可以使用 google maps v3 API 来实现?我读过所有 API 调用都必须在某个时候绑定到地图显示,所以我不确定是否可以在不违反某些许可条款的情况下完成我需要的工作。
我们有一个 google maps v3 企业帐户。
谢谢
亚历山德罗
【问题讨论】:
这个问题似乎是题外话,因为它是关于服务条款,而不是编码 【参考方案1】:是的,但请注意,服务器端地理编码服务只能与在 Google 地图上显示结果结合使用; Google Maps API Terms of Service License Restrictions 禁止对未在 Google 地图上显示的结果进行地理编码。
如果您正在寻找地理距离而不是驾驶距离,您可以使用:
function distance($lat1, $lng1, $lat2, $lng2, $miles = true)
$pi80 = M_PI / 180;
$lat1 *= $pi80;
$lng1 *= $pi80;
$lat2 *= $pi80;
$lng2 *= $pi80;
$r = 6372.797; // mean radius of Earth in km
$dlat = $lat2 - $lat1;
$dlng = $lng2 - $lng1;
$a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$km = $r * $c;
return ($miles ? ($km * 0.621371192) : $km);
您也可以使用:(通过两点的纬度和经度)
http://maps.google.com/maps/nav?q=from:77.23414,13.2323%20to:77.132,12.90925
这可能违反 Google API 条款 10.X。
【讨论】:
感谢您的回答。如果我是服务器端,如何显示谷歌地图?将结果传递给客户端并根据它们显示地图是否有效? 是的,我猜是这样。仔细检查一次最新的 Maps API 条款。以上是关于使用谷歌地图v3验证两点(纬度或地址)服务器端之间的路线距离的主要内容,如果未能解决你的问题,请参考以下文章