Как я могу преобразовать Google Maps plus коды в координаты Lng и Lat

Я работаю над проектом и использую старые карты Google. Например, для определения местоположения больницы требуются координаты gps по долготе и широте.

Я не могу найти способ получить эту информацию в этом формате "lng, lat"

Например: (34.417514, 8.7518123)

Единственное, что есть в новых картах Google, - это коды плюсов (используемые https://plus.codes/), которые они использовать как координаты местоположения.

Не могли бы вы помочь мне найти способ конвертировать их в формат lng lat или способ получить данные lng и lat напрямую с веб-сайта Google Maps.

Или альтернативу, сохранив мою геолокацию в формате плюсовых кодов в студии Android (конечно, в базе данных) вместо того, чтобы использовать lat lng

https://www.up-00.com/i/00125/m4kadq6c7aeb.png


person Ramy    schedule 23.05.2019    source источник
comment
Где ваш код и что вы пробовали?   -  person LogicalBranch    schedule 23.05.2019
comment
У меня сейчас нет кода приложения для Android, потому что он находится на другом моем компьютере, и я далеко от дома, но я работаю над веб-панелью, которая извлекает координаты широты и долготы и помещает их в ссылку на карты Google следующим образом: www. google .com / maps / place / @ lng, lat, но это все еще очень неточно и, по-видимому, дополнительные коды намного проще и удобнее использовать для создания рабочей ссылки на Google Maps postion   -  person Ramy    schedule 24.05.2019


Ответы (2)


Вы можете преобразовать коды Plus в формат lat/lng с помощью API кодов Plus . Если у вас есть полный (8 цифр перед знаком «+», например 8F6CCQCW+2F для вашего местоположения) Plus Code, вы можете локально (без интернет-запросов) использовать _ 3_ следующим образом:

...
OpenLocationCode olc = new OpenLocationCode("8F6CCQCW+2F");
Log.d(TAG, "Lat = " + olc.decode().getCenterLatitude() + "  Lng = " + olc.decode().getCenterLongitude());
...

Если у вас короткий плюс-код (менее 8 цифр перед символом "+", например CCQCW+2F Gafsa для вашего местоположения, Gafsa - это область, и он используется вместо использования полного плюс-кода), вы можете использовать HttpURLConnection с

`https://plus.codes/api?address=CCQCW%2B2F Gafsa&key=YOUR_GEOCODING_API_KEY`

(%2B для символа +)

(NB! Вам нужен ключ API геокодирования для геокодирования Gafsa части (это область, вам нужна область с коротким плюсовым кодом) и получите теги location.lat и location.lng из его ответа JSON:

{
  "plus_code": {
    "global_code": "8F6CCQJG+",
    "geometry": {
      "bounds": {
        "northeast": {
          "lat": 34.432500000000005,
          "lng": 8.777500000000003
        },
        "southwest": {
          "lat": 34.43000000000001,
          "lng": 8.775000000000006
        }
      },
      "location": {
        "lat": 34.431250000000006,
        "lng": 8.776250000000005
      }
    },
    "locality": {}
  },
  "status": "OK"
}

Для «альтернативы» (сохранение моей геолокации в формате плюсовых кодов) вы можете (полностью локально) использовать encode() метод _ 15_ класс:

OpenLocationCode.encode(34.43125, 8.77625)
person Andrii Omelchenko    schedule 27.05.2019

Решение Python:

>>> import openlocationcode
>>> openlocationcode.decode('8F6CCQCW+2F')
[34.42, 8.796125, 34.420125, 8.79625, 34.4200625, 8.7961875, 10]
person hoju    schedule 08.07.2020
comment
извините, но он показывает эту ошибку ‹br› openlocationcode.decode ('8F6CCQCW + 2F') Traceback (последний вызов последним): файл ‹stdin›, строка 1, в ‹module› AttributeError: модуль openlocationcode не имеет атрибута 'декодировать' - person MD Nasirul Islam; 09.12.2020