1
我設法找到了一個函數,該函數給出了一個latLng和一個半徑的NE角和SW角座標。從NE SW區域查找圓半徑
/**
* Get NE & SW coordinates around a point
*
* @param $lat float latitude of origin pt
* @param $lng float longitude of origin pt
* @param $distance int radius in km
*
*/
function getBoundsCoords($latitude, $longitude, $distance) {
$radius = 6378.1;
$neLat = rad2deg(asin(sin(deg2rad($latitude)) * cos($distance/$radius) + cos(deg2rad($latitude)) * sin($distance/$radius) * cos(deg2rad(0))));
$swLat = rad2deg(asin(sin(deg2rad($latitude)) * cos($distance/$radius) + cos(deg2rad($latitude)) * sin($distance/$radius) * cos(deg2rad(180))));
$neLng = rad2deg(deg2rad($longitude) + atan2(sin(deg2rad(90)) * sin($distance/$radius) * cos(deg2rad($latitude)), cos($distance/$radius) - sin(deg2rad($latitude)) * sin(deg2rad($neLat))));
$swLng = rad2deg(deg2rad($longitude) + atan2(sin(deg2rad(270)) * sin($distance/$radius) * cos(deg2rad($latitude)), cos($distance/$radius) - sin(deg2rad($latitude)) * sin(deg2rad($neLat))));
return array(
'ne' => array(
'lat' => $neLat,
'lng' => $neLng
),
'sw' => array(
'lat' => $swLat,
'lng' => $swLng
)
);
}
我還設法找到了相反的功能至極的一部分,讓我回來的中心點座標(很容易),但我沒能找到回半徑:
function getCoordsFromBounds($coordsNeSw) {
return array(
'lat' => ($coordsNeSw['ne']['lat'] + $coordsNeSw['sw']['lat'])/2,
'lng' => ($coordsNeSw['ne']['lng'] + $coordsNeSw['sw']['lng'])/2,
'radius' => "??????"
);
}
我懷疑我應該做getBoundsCoords()函數的反面,但我對sin/cos/deg/rad不是很舒服......
當您從NE。比如說」 W區域「是指你獲得的是平方英里,還是給定了NE和SW座標,並且你需要基於該座標的半徑? –
給出了NE和SW座標,我正在尋找基於此的半徑 – Axi