Получить месторасположение штата из города здесь Geocode API - PullRequest
1 голос
/ 13 апреля 2020

У меня проблема с геокодированием штатов и городов в Германии. Я не могу получить правильный идентификатор места для указанных c округов или штатов. Возьмем, к примеру, округ: Ольденбург.

Графство Ольденбург существует дважды внутри API Here.

  1. Oldenburg (Oldb.) - округ от города Ольденбург
  2. Oldenburg - округ от города вокруг Ольденбурга

Итак, я бы хотел отложить между уникальным стендом Ольденбург-графство. Но, следовательно, мне нужен правильный herePlaceId для округа. Но я не могу сформировать правильный запрос здесь-api, так что я получаю правильное место для их стенда. Oldenburg (Oldb.) как округ для города Ольденбург работает нормально, но как можно было бы получить правильное herePlaceId для Oldenburg, округ вокруг Ольденбург-Сити.

Google правильно понимает мой поиск:

Это округ Oldenburg для района вокруг Ольденбург-Сити: https://www.google.com/maps/place/Oldenburg/@52.9845275, 8.0922129,10z / data =! 3m1! 4b1! 4m5! 3m4! 1s0x47b72f168effaa95: 0xd6a3061c95f9bd2b! 8m373! ! 4d8.386907

и это округ Oldenburg (Oldb.) для самого города: https://www.google.com/maps/place/Oldenburg/@53.0578722, 8.3356219,11.25z / data =! 4m5! 3m4! 1s0x47b6de53b5b669b3: 0xed1ccb1bad854865! 8m2 ! 3d53.1434501! 4d8.2145521

Надеюсь, вы понимаете, о чем я. В качестве второго примера вы можете взять Sachsen. Всякий раз, когда вы запрашиваете Sachsen в api here-geocoding-api, вы возвращаете город на юге Германии и не получаете никакой информации о штате Sachsen.

Есть ли способ получить обратно информацию только для штатов из API?

[
  {
    formattedAddress: 'Sachsen bei Ansbach, Bayern, Deutschland',
    latitude: 49.28949,
    longitude: 10.66038,
    country: 'Deutschland',
    countryCode: 'DE',
    state: 'Bayern',
    county: 'Ansbach (Landkreis)',
    city: 'Sachsen bei Ansbach',
    zipcode: '91623',
    district: null,
    streetName: null,
    streetNumber: null,
    building: null,
    extra: { herePlaceId: 'NT_jFqf4FFetzruKjei6.HGfA', confidence: 1 },
    administrativeLevels: { level1long: 'Bayern', level2long: 'Ansbach (Landkreis)' },
    provider: 'here'
  }
]

Редактировать - 14.04.2020 | 13: 23Уч Играя с API, я обнаружил, что могу получить правильный идентификатор места для Sachsen, используя запрос engli sh. Поэтому я не запрашивал Sachsen, Deutschland, но Saxony, Germany, который сделал это, я получил правильный идентификатор места для штата Sachsen. Проблема с Oldenburg все еще существует

1 Ответ

2 голосов
/ 22 апреля 2020

Есть два способа достичь этого:


1. Если вы точно знаете, что ищете страну, штат или округ и т. Д. c., Вы можете использовать Geocoder API :

Для Ольденбург дело округа (результат - 2 округа): https://geocoder.ls.hereapi.com/6.2/geocode.json?&county=Oldenburg&apikey=YOUR_API_KEY

для Sachsen дело штата (результат - 1 штат): https://geocoder.ls.hereapi.com/6.2/geocode.json?&state=Sachsen&apikey=YOUR_API_KEY


2. Если вы не знаете тип запроса, вы можете использовать Geocoder Autocomplete API , который дает вам несколько предложений, и вы можете отфильтровать их по свойству matchLevel. В вашем случае из Ольденбурга matchLevel должен равно "county":

для Ольденбург дело округа (с максимум 5 результатами): https://autocomplete.geocoder.ls.hereapi.com/6.2/suggest.json?query=Oldenburg&maxresults=5&apikey=YOUR_API_KEY

Ответ содержит 5 результатов, два из них имеют собственность "matchLevel": "county":

  • Deutschland, Ольденбург (Oldb.)
  • Deutschland, Oldenburg
.
.
{
  "label": "Deutschland, Oldenburg (Oldb.)",
  "language": "de",
  "countryCode": "DEU",
  "locationId": "NT_UgRRHQATr.tTMA-5pu0KcC",
  "address": {
    "country": "Deutschland",
    "state": "Niedersachsen",
    "county": "Oldenburg (Oldb.)"
  },
  "matchLevel": "county"
},
{
  "label": "Deutschland, Oldenburg",
  "language": "de",
  "countryCode": "DEU",
  "locationId": "NT_NrK.-.wF217Ne36759bEwC",
  "address": {
    "country": "Deutschland",
    "state": "Niedersachsen",
    "county": "Oldenburg"
  },
  "matchLevel": "county"
},
.
.

Дайте мне знать, если это поможет.

...