Mismatch of location id between Geocoding Autocomplete and Geocoding

為{幸葍}努か 提交于 2021-01-29 05:54:55

问题


I am using geocoding autocomplete to display found locations after user typed something. Afterwards I am using geocoding with given location ID to fetch detailed information about selected location.

It worked well, till I tried to select "Russia"

Here is my first request to geocoding autocomplete via https://autocomplete.geocoder.api.here.com/6.2/suggest.json

{
  "app_id": "xxx",
  "app_code": "xxx",
  "query": "russia",
  "resultType": "areas"
}

And here is the (simplified) response:

{
    "suggestions": [
        {
            "label": "Russia",
            "language": "en",
            "countryCode": "RUS",
            "locationId": "NT_Ya5FK7rlnK5m6PEDf7BwfA",
            "address": {
                "country": "Russia"
            },
            "matchLevel": "country"
        },
        ...
    ]
}

The second request that I send to geocoding via https://geocoder.api.here.com/6.2/geocode.json with following arguments

{
  "app_id": "xxx",
  "app_code": "xxx",
  "locationId": "NT_Ya5FK7rlnK5m6PEDf7BwfA",
  "jsonattributes": "1",
  "gen": "9",
  "language": "en"
}

As you can see - location id is the same as in response to the first query. I suggest to become details to country russia, but instead, I receive empty response:

{
    "response": {
        "metaInfo": {
            "timestamp": "2019-08-20T21:02:54.652+0000"
        },
        "view": []
    }
}

After some troubleshooting I noticed, that geocoding also works with simple form input. I directly tried this request on the example page. In searchtext I type "russia", and voila, I got response (simplified):

{
  "Response": {
    "MetaInfo": {
      "Timestamp": "2019-08-21T12:36:07.874+0000"
    },
    "View": [
      {
        "_type": "SearchResultsViewType",
        "ViewId": 0,
        "Result": [
          {
            ...
            "Location": {
              "LocationId": "NT_tcqMSofTaW297lvniHjdXD",
              "LocationType": "area",
              "Address": {
                "Label": "Россия",
                "Country": "RUS",
                "AdditionalData": [
                  {
                    "value": "Россия",
                    "key": "CountryName"
                  }
                ]
              },
              ...
            }
          }
        ]
      }
    ]
  }
}

But wait, what? The ID form autocomplete was NT_Ya5FK7rlnK5m6PEDf7BwfA and from geocoding is NT_tcqMSofTaW297lvniHjdXD

Why do I receive wrong location ID from geocoding autocomplete?

We just implemented HERE API in our product, and we are testing it currently with real use-case input, and so we found this bug.

Is it just one location, that has inconsistent locationId reference, or are there some more? How can we workaround this error? Is it common?


回答1:


Geocoder generates LocationId from a set of values, which uniquely identify the object. This set includes different types of data such as result type, base names and attribution of admin hierarchy, street name, house number, etc. From all this information Geocoder generates a hash value which is expected to be unique. Using only base names guarantees that LocationId does not change if e.g. additional language variants are added to country or state name. But if the main official country or state name changes, all the areas and addresses within this country or state will get new LocationId. So using LocationId from Geocoder Autocomplete API will not always work with Geocoder API,

We will update our documentation to reflect this as the current documentation may be a bit misleading.



来源:https://stackoverflow.com/questions/57591954/mismatch-of-location-id-between-geocoding-autocomplete-and-geocoding

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!