有关模糊搜索查询的Google Geocoding API意外结果

时间:2016-04-11 13:25:15

标签: google-maps geocoding google-geocoding-api

我使用谷歌地理编码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"
    }

问题是,答案应该包含德国存在的所有Frankfurts。 (法兰克福,主要+法兰克福,奥得河)。但它只是回应主要的法兰克福。同样的事情发生在其他地名上,理论上应至少存在两次。但谷歌只显示一个。可能是最相关的一个。

有没有办法修改它?或者更好地使用其他地理编码服务?

我尝试使用组件过滤器,但这并没有改变任何东西。

1 个答案:

答案 0 :(得分:2)

这是地理编码API的预期行为。最突出的结果将会回来。但是,您可以使用Autocomplete request of Places API,最多可以返回5条建议。

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

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Frankfurt&types=(cities)&components=country%3ADE&key=YOUR_API_KEY

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

为了进一步深入挖掘,您可以为每个地点ID执行地理编码请求:

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJxZZwR28JvUcRAMawKVBDIgQ&key=YOUR_API_KEY

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJb_u1AiqYB0cRwDteW0YgIQQ&key=YOUR_API_KEY

希望它有所帮助。