使用谷歌地图将海里转换为给定纬度的经度

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 将邮政编码转换为地理位置(纬度和经度)?

给定两个位置,如何从谷歌地图获取所有纬度和经度

在谷歌地图 api v3 中将地区、城市、州、国家/地区转换为纬度和经度?

我想通过从 json 获取经度和纬度在谷歌地图上显示标记

使用纬度和经度显示谷歌地图

是否可以将地图中可拖动标记的纬度和经度(使用 javascript)转换为 HTML 表单?