使用谷歌地图将海里转换为给定纬度的经度
Posted
技术标签:
【中文标题】使用谷歌地图将海里转换为给定纬度的经度【英文标题】:Convert nautical miles to degrees longitude given a latitude using Google maps 【发布时间】:2011-10-19 17:27:17 【问题描述】:我想将 Google 地图 LatLngBounds 对象明确定义为在 LatLong P 右侧 x 海里和 P 左侧 x 海里。并将 LatLngBounds 定义为在点 P 上方 y 海里和 y nm 低于 P。
所以基本上我想使用纬度和经度来定义一个 LatLngBounds,我想从 x、y 和 P 中获取纬度和经度。
纬度可以轻松转换为经度:1 度等于一海里。但是 每海里的经度度数随纬度而变化。公式是(在php中)
public static function degPerNmAtLat($lat)
$pi80 = M_PI / 180;
$lat = $lat*$pi80; //convert lat to radians
$p1 = 111412.84; // longitude calculation term 1
$p2 = -93.5; // longitude calculation term 2
$p3 = 0.118; // longitude calculation term 3
// below: calculate the length of a degree of latitude and longitude in meters
$longlen = ($p1 * cos($lat)) + ($p2 * cos(3 * $lat)) + ($p3 * cos(5 * $lat));
$longlen = $longlen * (3.280833333) / (5280 * 1.15077945); // convert to nautical miles
return 1/$longlen;
但这似乎是一项常见的任务,我想知道谷歌地图是否有一个我缺少的功能可以完成这个任务。是否有本地 Google 地图方法可以在不使用上述公式的情况下从 x、y 和 P 创建我的 LatLngBounds 对象?
【问题讨论】:
【参考方案1】:您可以在Google Maps API V3 geometry library 中使用computeOffset() 函数:
var dist = nauticalMiles * 1852; // convert nm to meters
var point = new google.maps.LatLng(lat,lng);
var eastPoint = google.maps.geometry.spherical.computeOffset(point,dist,90.0);
var westPoint = google.maps.geometry.spherical.computeOffset(point,dist,270.0);
【讨论】:
是的,就是这样。命名空间对象中的球形对象还有其他几个有用的方法,例如两个 LatLng 对象之间的距离和航向。谢谢。以上是关于使用谷歌地图将海里转换为给定纬度的经度的主要内容,如果未能解决你的问题,请参考以下文章
如何使用谷歌地图 api 将邮政编码转换为地理位置(纬度和经度)?