lat在地图php中的坐标长

时间:2013-12-31 02:09:13

标签: php php-gd

<?php
header("Content-type:image/png");
$image1 = imagecreatefrompng('cylindrical_map.png'); 
$image2 = imagecreatefrompng('pin.png'); 

$long = 18.96;
$lat = 72.82;
$scale_x = imagesx($image1);
$scale_y = imagesy($image1);
$pt = getlocationcoords($lat, $long, $scale_x, $scale_y);

imagecopymerge($image1, $image2, $pt["x"],$pt["y"], 0, 0, 80, 80, 98); //// place a second image on top of image 1


imagepng($image1);

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

?>

我有这个代码将lat和long转换为坐标,但是例如我把纽约市的put和lat以及它不会指向正确的位置,将转换lat和long转换为坐标时出现问题。

请帮我解决这个问题。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用PEAR packagethis SO answer来计算坐标。

SO线程包含满足您需求的代码。


最后,我为你找到了一个有效的例子。 (花了几分钟)。 我想你拿了this篇并改了一下。

首先,您需要计算引脚的偏移量。我从jQuery插件中获取this one(我将其缩小到50px宽度)。这意味着您从尖端获取x和y坐标。请注意,您必须将左上角作为原点!

$pinOffsetX = 19;
$pinOffsetY = 42;

现在你写下你的坐标了。我拿了纽约的坐标。

$long = -74.0059700;
$lat = 40.7142700;

加载图片。我拿this map得到一张大地图并检查其准确性。

$pin = imagecreatefrompng("pin.png");
$im = imagecreatefromjpeg("map.jpg");

获取图像的大小并计算坐标

$scale_x = imagesx($im);
$scale_y = imagesy($im);
$pinWidth = imagesx($pin);
$pinHeight = imagesy($pin);
$pt = getlocationcoords($lat, $long, $scale_x, $scale_y);

功能没有改变。 现在将引脚复制到地图上。注意:我使用imagecopy而不是imagecopymerge。

imagecopy($im, $pin, $pt["x"] - $pinOffsetX, $pt["y"] - $pinOffsetY, 0, 0, $pinWidth, $pinHeight);

必须减去引脚偏移量才能将尖端移动到该位置。 输出图像(并销毁它!)

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