Просто хочу указать, что это частичный дубликат: Отображение географического положения c местоположение на карте мира пользователя
Однако я использую библиотеку вмешательства чтобы добавить маркер поверх существующего изображения.
Та же проблема: система координат не преобразует координаты в координаты пикселя должным образом, поэтому маркер неправильно размещен на карте. Он возвращает маркер где-то в Африке, который на самом деле должен быть маркером в Лондоне (И правильно расположен - не угадан)
Я посмотрел на его ответ ... и я понятия не имею, что он имел в виду, пытался поменяться местами $lat
и $lon
, и он по-прежнему возвращает неправильную координату.
$lat = 51.5059662; // Latitude of a place in city of london
$lon = -0.0813997; // Longitude of a place in city of london
$map = Image::make( $path ); // Path to map
$map_width = $map->width(); // Width of image
$map_height = $map->height(); // Height of image
$marker = Image::make( $pinName ); // Marker image
$marker->resize(30,30); // resize to a 30x30
$pixelCoord = $this->getlocationcoords($lat, $lon, $map_width, $map_height); // Get Location coords as pixel
$map->insert( $marker,'top-left',$pixelCoord["x"] , $pixelCoord["y"] ); // Place marker at pixel cord x and y from top-left as 0,0
$map->save( $path );
private function getlocationcoords($lat, $lon, $width, $height){
$x = (($lat + 180) * (500 / 360));
$y = ((($lon * -1) + 90) * (500 / 180));
return array("x"=>round($x),"y"=>round($y));
}
Изображение карты