我想明确将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地图方法?
答案 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);