我正在与HERE地理编码器一起工作,如果我们在searchtext参数中添加特定的地区名称,则会发现返回的城市错误的情况。
这是示例请求:
https://geocoder.api.here.com/6.2/geocode.json?app_id=...&app_code=...&searchtext=Centro,Campos%20dos%20Goytacazes,RJ,Brazil
这是响应的重要部分:
{
_type: "SearchResultsViewType",
ViewId: 0,
Result: [
{
Relevance: 1,
MatchLevel: "district",
MatchQuality: {
Country: 1,
State: 1,
City: 1,
District: 1
},
Location: {
...
Address: {
Label: "Centro, Nova Iguaçu, RJ, Brasil",
Country: "BRA",
State: "RJ",
City: "Nova Iguaçu",
District: "Centro",
PostalCode: "26052-060",
...
}
如您所见,MatchQuality.City为1,但返回的城市错误(“ NovaIguaçu”而不是“ Campos dos Goytacazes”)。
“ Centro”地区似乎是从另一个城市带走的,但是matchQuality表示该城市正确匹配了(!)
尝试不带地区名称的相同请求将在地址中返回正确的城市:
请求:
https://geocoder.api.here.com/6.2/geocode.json?app_id=...&app_code=...&searchtext=Campos%20dos%20Goytacazes,RJ,Brazil
响应:
{
_type: "SearchResultsViewType",
ViewId: 0,
Result: [
{
Relevance: 1,
MatchLevel: "city",
MatchQuality: {
Country: 1,
State: 1,
City: 1
},
Location: {
...
Address: {
Label: "Campos dos Goytacazes, RJ, Brasil",
Country: "BRA",
State: "RJ",
City: "Campos dos Goytacazes",
PostalCode: "28010-550",
...
}
谢谢!
答案 0 :(得分:0)
matchLevel明确将第一个请求声明为“区域”,这意味着它与“ Centro”作为一个区域完全匹配,并获取该区域的详细信息(其所属的城市,国家等)。
searchtext请求属性是一种自由格式的文本,响应中的matchquality不提供其中提供的值的质量。匹配质量对于国家,州和城市返回1,因为它们与中心区完全匹配。
如果您需要匹配质量来准确说明与您提供的城市的相关性,则应在请求中明确提及城市属性。
有关可能的请求属性的完整列表,请参见https://developer.here.com/documentation/geocoder/topics/resource-geocode.html。
希望这会有所帮助!
城市
xs:string需要特定于国家/地区的映射。例子
USA: City Germany: Gemeinde
国家
xs:string,完全匹配使用以下命令指定国家或国家列表 国家/地区代码(3个字节,ISO 3166-1-alpha-3)或国家/地区名称。 这是一个严格的过滤器。结果仅限于指定的 一个或多个国家。
注意:为避免歧义,我们建议使用 3个字母的ISO代码,但不带拼写的国家名称。用 指出拼写错误的风险较高,而且并非所有语言 支持所有国家/地区的翻译。
答案 1 :(得分:0)
谢谢,但是使用支持人员建议的参数,我仍然得到了意外的结果。
我了解,如果存在按地区名称而不是城市进行的匹配,则matchQuality会通过不返回“城市:1”匹配来反映该匹配,但我真正担心的是,该匹配区实际上存在于“那个城市,您在反向地理编码请求中将其返回,但在我搜索时无法识别。
例如,此请求:
http://reverse.geocoder.api.here.com/6.2/reversegeocode.json?app_id=...&app_code=...&mode=retrieveAddresses&prox=-21.759600,-41.324216
返回此响应(请注意城市:“ Campos dos Goytacazes”和地区:“ Centro”部分)
MatchQuality: {
Country: 1,
State: 1,
City: 1,
District: 1,
Street: [
1
],
HouseNumber: 1,
PostalCode: 1
},
...
Address: {
Label: "Rua Tenente Coronel Cardoso, 460, Centro, Campos dos Goytacazes - RJ, 28010-802, Brasil",
Country: "BRA",
State: "RJ",
City: "Campos dos Goytacazes",
District: "Centro",
Street: "Rua Tenente Coronel Cardoso",
HouseNumber: "460",
PostalCode: "28010-802",
...
}
但是如果我尝试转发地理编码请求:
https://geocoder.api.here.com/6.2/geocode.json?app_id=...&app_code=...&district=Centro&city=Campos%20dos%20Goytacazes&state=RJ&country=BRA
响应反映出没有匹配的城市,并从另一个城市返回了“ Centro”地区...
MatchQuality: {
Country: 1,
State: 1,
District: 1
},
...
Address: {
Label: "Centro, Nova Iguaçu, RJ, Brasil",
Country: "BRA",
State: "RJ",
City: "Nova Iguaçu",
District: "Centro",
PostalCode: "26052-060"
...
}
但是,如果我使用反向地理编码响应中收到的完整地址进行搜索,它将正确检测到城市和地区!
https://geocoder.api.here.com/6.2/geocode.json?app_id=...&app_code=...&searchtext=Rua%20Tenente%20Coronel%20Cardoso,%20460,%20Centro,%20Campos%20dos%20Goytacazes%20-%20RJ,%2028010-802,%20Brasil
MatchQuality: {
Country: 1,
State: 1,
City: 1,
District: 1,
Street: [
1
],
HouseNumber: 1,
PostalCode: 1
},
...
Address: {
Label: "Rua Tenente Coronel Cardoso, 460, Centro, Campos dos Goytacazes - RJ, 28010-802, Brasil",
Country: "BRA",
State: "RJ",
City: "Campos dos Goytacazes",
District: "Centro",
Street: "Rua Tenente Coronel Cardoso",
HouseNumber: "460",
PostalCode: "28010-802",
...
我认为邮政编码和街道名称有助于消除歧义,但是如果我使用有效的城市名称传递“ city”参数,就不会有任何歧义,对吧?
谢谢!