PHP реализует API гео/обратного геокодирования для карты AutoNavi

PHP

Обратный геокодинг в автонавите Map Web Server API использовал на этот раз

Если geoip получает географическое местоположение, соответствующее вашим потребностям, вы можете перейти к:nuggets.capable/post/684490…

Описание товара

API геокодирования/обратного геокодирования — это интерфейс для доступа к удаленным службам по протоколу HTTP/HTTPS, обеспечивающий возможность преобразования между структурированными адресами и широтой и долготой.

Определение структурированного адреса: Прежде всего, адрес должен быть строкой символов, включая названия стран, провинций, городов, районов, поселков, деревень, улиц, номеров домов, жилых массивов, зданий и других названий зданий. Следуйте символам, сгруппированным вместе, от имени большой области к имени маленькой области. Действительный адрес должен быть уникальным. Примечание. Информацию о стране можно выборочно игнорировать при преобразовании геокодирования для материкового региона, Гонконга и Макао, но нельзя игнорировать состав адресов на уровне провинции, города, поселка и других уровней.

Применимая сцена

  • Geocoding: преобразует подробные структурированные адреса к высокой немецкой широте и долготу координаты. И он поддерживает разрешение ориентирных сценических пятен и названий здания в широту и долготу координаты гадости.
    Структурированный адрес Адрес: Чаоянский район, Пекин Фу Тонг Восточная улица, после преобразования 6 координат: 116.480881,39.989410
    Пример знакового здания: площадь Тяньаньмэнь после переоборудования: 116.397499, 39.908722
  • Обратное геокодирование: преобразуйте широту и долготу в подробный структурированный адрес и возвращайте информацию о POI и AOI поблизости.
    Например: 116.480881,39.989410 После преобразования описания адреса: No. 6, Futong East Street, Chaoyang District, Beijing

Инструкции по применению

первый шаг,Подать заявку на ключ типа API веб-службы;

На втором этапе эталонный документ параметров интерфейса инициирует запрос HTTP/HTTPS, и на первом этапе будут отправлены требуемые параметры;

Третий шаг — получить данные, возвращенные запросом (в формате JSON или XML), и проанализировать данные, обратившись к возвращаемому документу параметров.

Если нет специального объявления, все входные параметры и кодировка выходных данных интерфейса унифицированы в кодировке UTF-8.

parameters
Представленные параметры включают обязательные параметры и необязательные параметры. Все параметры разделяются символом амперсанда (&).

Адрес службы API обратного геокодирования

https://restapi.amap.com/v3/geocode/geo?parameters

address — это структурированный адрес, по которому необходимо получить координаты, output (XML) используется для указания формата возвращаемых данных, а Key — идентификатор пользователя, запрашивающего данные.

city ​​— город указанного запроса (необязательный параметр)

Адрес службы API обратного геокодирования

https://restapi.amap.com/v3/geocode/regeo?parameters

location(116.310003,39.991957) — это широта и долгота точки координат, которые нужно преобразовать, radius (1000) — это диапазон возвращаемых ближайших POI, единица измерения: метры, extensions(all) — это содержимое возвращаемых данных и выходные данные. (XML) используется для указания формата возвращаемых данных, ключ — это ключ веб-службы AutoNavi.

Эта демонстрация реализована в фреймворке laravel (другие фреймворки могут быть реализованы таким же образом)

    /**
     * 将详细的结构化地址转换为高德经纬度坐标-高德地图-地理编码
     * @param string $address 填写结构化地址信息:省份+城市+区县+城镇+乡村+街道+门牌号码
     * @param string $city 查询城市,可选:城市中文、中文全拼、citycode、adcode
     * @return array
     */
    public function geo($address = '', $city = '北京')
    {
        $key = config('app.amap_key');
        /**
         * url:https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=XML&key=<用户的key>
         * output(XML/JSON)用于指定返回数据的格式
         */
        $url = "https://restapi.amap.com/v3/geocode/geo?output=JSON&key={$key}&address={$address}&city={$city}";

        // 执行请求
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_URL, $url);
        $data = curl_exec($ch);
        curl_close($ch);
        $result = json_decode($data, true);

        return $result;
    }

    /**
     * 根据经纬度获取地理位置-高德地图-逆地理编码
     * @param string $lon 经度
     * @param string $lat 纬度
     * @return array
     */
    public function regeo($lon, $lat)
    {
        // Key 是高德Web服务 Key。详细可以参考上方的请求参数说明。
        $key = config('app.amap_key');
        // location(116.310003,39.991957) 是所需要转换的坐标点经纬度,经度在前,纬度在后,经纬度间以“,”分割
        $location = $lon . "," . $lat;
        /**
         * url:https://restapi.amap.com/v3/geocode/regeo?output=xml&location=116.310003,39.991957&key=<用户的key>&radius=1000&extensions=all
         * radius(1000)为返回的附近POI的范围,单位:米
         * extensions 参数默认取值是 base,也就是返回基本地址信息
         * extensions 参数取值为 all 时会返回基本地址信息、附近 POI 内容、道路信息以及道路交叉口信息。
         * output(XML/JSON)用于指定返回数据的格式
         */
        $url = "https://restapi.amap.com/v3/geocode/regeo?output=JSON&location={$location}&key={$key}&radius=1000&extensions=base";

        // 执行请求
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_URL, $url);
        $data = curl_exec($ch);
        curl_close($ch);
        $result = json_decode($data, true);

        return $result;
    }

Вам нужно передать широту и долготу, чтобы получить текущее географическое положение, подробности см. в комментариях к коду.

Если проблемы не устранены, обратитесь к документации по конкретному API:Не удается подключиться. Amapa.com/API/Web Color RV…

Чисто оригинально, я надеюсь, что это может быть полезно для всех, статья будет постоянно обновляться, если у вас есть какие-либо вопросы, пожалуйста, прокомментируйте