PHP Преобразовать широту и долготу в пиксельные координаты - PullRequest
0 голосов
/ 25 марта 2020

Просто хочу указать, что это частичный дубликат: Отображение географического положения 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));
    }

Изображение карты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...