问题
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