我有一张 Winkel Tripel 地图,需要在上面放置标记。我给出了纬度/经度中标记的位置。所以我需要一种方法将其转换为 X,Y。
我找到了一些代码(如下),但是当我尝试它时,45º 对角线的图有一个适中的 s 曲线。所以这显然是不正确的。
任何帮助都会很棒。我在 PHP 中这样做,但我应该能够转换任何语言。
private function sinc($x){
if($x == 0) return 1;
return sin($x) / $x;
}
private function winkelTripelToCartesian($lat, $lng){
$lat = deg2rad($lat);
$lng = deg2rad($lng);
$alpha = acos(cos($lat) * cos($lng / 2));
$x = ($lng * M_2_PI + (2 * cos($lat) * sin($lng / 2)) / $this->sinc($alpha)) / 2;
$y = ($lat + (sin($lat) / $this->sinc($alpha))) / 2;
return array('x'=> strval($x), 'y' => strval($y));
}