谷歌地理编码API意外的结果不明确的搜索查询



我使用google地理编码API来实现在自定义地图中自动完成位置搜索。我做了一个这样的请求:

http://maps.googleapis.com/maps/api/geocode/json?address=frankfurt&components=country[de]

我得到的回复只有一个结果:

    {
      results: [
        {
          address_components: [
            {
              long_name: "Frankfurt am Main",
              short_name: "Frankfurt am Main",
              types: [
                "locality",
                "political"
              ]
            },
            {
              long_name: "Darmstadt",
              short_name: "DA",
              types: [
                "administrative_area_level_2",
                "political"
              ]
            },
            {
              long_name: "Hessen",
              short_name: "HE",
              types: [
                "administrative_area_level_1",
                "political"
              ]
            },
            {
              long_name: "Deutschland",
              short_name: "DE",
              types: [
                "country",
                "political"
              ]
            }
          ],
          formatted_address: "Frankfurt am Main, Deutschland",
          geometry: {
            bounds: {
              northeast: {
                lat: 50.2272095,
                lng: 8.8003977
              },
              southwest: {
                lat: 50.0152145,
                lng: 8.4727299
              }
            },
            location: {
              lat: 50.1109221,
              lng: 8.6821267
            },
            location_type: "APPROXIMATE",
            viewport: {
              northeast: {
                lat: 50.2272095,
                lng: 8.8003977
              },
              southwest: {
                lat: 50.0152145,
                lng: 8.4727299
              }
            }
          },
          place_id: "ChIJxZZwR28JvUcRAMawKVBDIgQ",
          types: [
            "locality",
            "political"
          ]
        }
      ],
      status: "OK"
    }

问题是,回应应该包含德国所有的法兰克福汇报。(美因河畔法兰克福+奥德河畔法兰克福)。但它只是以美因河畔法兰克福作为回应。同样的事情也发生在其他地名上,理论上应该至少存在两次。但谷歌只展示了一个。可能是最相关的一个。

有办法修改吗?或者更好地使用另一个Geocode服务?

我试着使用组件过滤器,但这并没有改变任何事情。

这是Geocoding API的预期行为。最突出的结果将会回来。但是,您可以使用地方API的自动完成请求,最多可以返回5条建议。

您可以按国家/地区设置组件过滤器,并将类型限制为城市。请查看以下请求:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Frankfurt&types=(城市)&components=国家%3ADE&密钥=YOUR_API_key

此请求同时返回"德国法兰克福"(位置ID ChIJxZZwR28JvUcRAMawKVBDIgQ)和"德国奥德河畔法兰克福"(地址ID ChIJb_u1AiqYB0cRwDteW0YgIQQ)。

为了进一步挖掘,你可以为每个地方执行地理编码请求ID:

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJxZZwR28JvUcRAMawKVBDIgQ&密钥=YOUR_API_key

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJb_u1AiqYB0cRwDteW0YgIQQ&密钥=YOUR_API_key

希望能有所帮助。

最新更新