1

我正在使用使用Google Maps API v3的自定义地图应用程序。我遇到了一些问题。Google Maps API v3:为什么Google Maps API V3和Google Maps的搜索结果之间存在不一致?

我正在使用地方图书馆在我的地图中心附近使用关键字搜索大半径的地图。

问题1:当我做“家得宝”的搜索没有引号,我得到了“家”或“得宝”的结果,所以房地产经纪人回来,返回一个名为“牙科仓库”牙医,等等。但是,这并不是在Google地图本身中发生的。他们设法只返回家得宝而无需添加报价。当然,这个问题可以通过在用于请求的关键字中添加引号来解决,但我认为我的用户不一定知道要添加引号。我的问题是Google Maps知道默认只返回Home Depots,为什么他们的API不?

问题2:其他时间,根本找不到地方。有一家名为“楔子”的比萨餐厅,搜索“楔子”根本没有结果,但在谷歌地图上搜索我的城市“楔子”会返回四个兴趣点,包括餐馆和两个目标。

为什么不一致?

+0

https://developers.google.com/maps/faq#geocoder_differences – 2014-12-05 13:50:48

+0

@JoachimRohde我的问题不是关于地址解析,这是从地址到纬度/长度坐标的转换。我没有得到任何回应,搜索名为“楔子”的餐厅,但谷歌地图得到四个结果。 – MarkW 2014-12-05 13:58:20

回答

1

我认为使用我的搜索收到的内容与使用Google地图本身执行相同搜索时收到的内容之间存在差异的原因有几个。

  1. 谷歌并没有使用与他们的地图API完全相同的请求,这与我收集的内容完全相同。

  2. 我相信他们在流行的搜索条件和地点上运用了一点巧妙。例如搜索'家得宝'没有报价只返回家得宝,而不是牙科仓库,油库,家庭清洁解决方案等。因为数百万人搜索后,他们只需要家得宝。这个结果并不反映在他们的API结果中。

为了解决这个问题,我增加了一倍的请求数量。首先,我做了一个keywordnearbySearch,然后我做了一个namenearbySearch。当然这会返回更多的结果,有些则无关紧要,但总的来说,与其中一个结果相比,结果要好得多。为了完整起见,这从字面上看起来像:

request = { 
    keyword: keyword, 
    bounds: bounds 
} 

service.nearbySearch(request, searchHandler); 


request = { 
    name: keyword, 
    bounds: bounds 
} 

service.nearbySearch(request, searchHandler); 

在哪里我已经宣布requestkeywordboundsservicesearchHandler回调。

如果您正在努力从搜索中获得您想要的结果,请尝试加倍这样的请求,我希望它适合您。