在用户的世界地图上显示地理位置

时间:2012-04-12 10:35:39

标签: php gd geo

我正在尝试创建一个简单的脚本,它将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”。如果您将它们粘贴到谷歌地图中,​​它会显示“里加,拉脱维亚”,因此坐标似乎是正确的。

现在这是脚本的结果:

enter image description here

完全关闭,显示非洲附近的点。

似乎 getlocationcoords 计算错误的坐标。任何建议如何解决这个问题?谢谢!

节点:我无法使用谷歌地图或任何其他服务,我必须这样做。

1 个答案:

答案 0 :(得分:1)

好吧,所以这个问题真是太愚蠢了,我把经度和纬度混为一谈,他们应该走另一条路,现在一切正常。洛尔