使用谷歌地图将纬度转换为纬度经度

时间:2011-10-19 17:27:18

标签: javascript google-maps google-maps-api-3 latitude-longitude

我想明确将Google地图LatLngBounds对象定义为距离P {+ 3}} P和x海里数右侧的x海里。并将LatLngBounds定义为y海里在点P和y nm以下P。

所以基本上我想用纬度和经度定义LatLngBounds,我想从x,y和P得到纬度和经度。

度数纬度容易转换为经度:1度等于一海里。但
每nm的经度随纬度变化。公式是(在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;
}

但这似乎是一项常见任务,我想知道谷歌地图是否有一个我想念的功能可以实现这一目标。有没有使用上面的公式从x,y和P创建我的LatLngBounds对象的本地Google地图方法?

1 个答案:

答案 0 :(得分:3)

您可以在computeOffset()中使用Google Maps API V3 geometry library功能:

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);