1

lon / latを引数として、単語マップ画像にドットを配置する単純なスクリプトを作成しようとしています。

<?php

if(empty($long))$long = 56.946536;
if(empty($lat)) $lat = 24.10485;

$im = imagecreatefromjpeg("earth_310.jpg");
$red = imagecolorallocate ($im, 255,0,0);

$scale_x = imagesx($im);
$scale_y = imagesy($im); 

$pt = getlocationcoords($lat, $long, $scale_x, $scale_y);

imagefilledrectangle($im,$pt["x"]-2,$pt["y"]-2,$pt["x"]+2,$pt["y"]+2,$red);

header("Content-Type: image/png");
imagepng($im);
imagedestroy($im);

function getlocationcoords($lat, $lon, $width, $height)
{  
   $x = (($lon + 180) * ($width / 360));
   $y = ((($lat * -1) + 90) * ($height / 180));
   return array("x"=>round($x),"y"=>round($y));
}
?>

次の座標「56.946536、24.10485」を使用していることに注意してください。グーグルマップに貼り付けると「リガ、ラトビア」と表示されるので、座標が正しいように見えます。

これがスクリプトの結果です。

ここに画像の説明を入力してください

完全にオフで、アフリカの近くのどこかにドットが表示されます。

getlocationcoordsが座標を誤って計算しているようです。これを修正する方法の提案はありますか?ありがとうございました!

ノード:Googleマップやその他のサービスを使用できません。この方法で使用する必要があります。

4

1 に答える 1

1

わかりました、それで問題は本当にばかげていました、私は経度と緯度を混ぜ合わせました、彼らは逆に行くべきでした、今すべてがうまくいきます。笑

于 2012-04-14T20:20:20.387 に答える