我正在使用Google Maps API附近搜索来查找某个地区的餐馆。但我遇到的一个问题是并非type=restaurant
的所有结果都被返回。对于马萨诸塞州韦尔斯利的一个特定点,当我运行https://maps.googleapis.com/maps/api/place/nearbysearch/xml?location=42.3153566,-71.2449400&radius=1500&type=restaurant&key=MY_API_KEY时,我能得到三个结果,包括Needham的Brothers Pizza,Needham Heights的Panellas Market和Wellesley的Kings Dining,餐厅的类型。但是,当我将type=restaurant
更改为keyword=wok
时,我只得到一个我之前没有得过的结果:
<name>The Wok</name>
<vicinity>180 Worcester St, Wellesley</vicinity>
<type>restaurant</type>
<type>food</type>
<type>point_of_interest</type>
<type>establishment</type>
<geometry>
<location>
<lat>42.3153566</lat>
<lng>-71.2449400</lng>
...
这显然被标记为餐厅,就像其他三家一样。请注意,The Wok的坐标正是我之前用于未返回The Wok的查询的坐标,因此它肯定在早期查询的半径内,该半径也应该返回第四个结果。这对我来说是一个问题,因为我希望能够收集给定区域内的所有餐馆。那时似乎Google API不会收集某个区域内的所有结果,而是收集它们中的一些神秘部分。我已经知道一次搜索不会产生超过二十个结果,但我之前的搜索,从以The Wok为中心的半径开始,只产生了三个结果。我已经能够多次用The Wok复制这个特殊的问题了,那么谷歌专门为The Wok提供的数据可能会出现问题吗?
编辑:使用keyword=restaurant
解决了这个问题,但由于API会搜索许多字段(包括评论)以查找关键字的潜在匹配项,因此可能会产生不需要的结果。我正在严格寻找餐馆,而不是其他类型的场所。
答案 0 :(得分:0)
NearbySearch默认为rankby=prominence
,您可能需要rankby=distance
。但是,这不会让你指定半径(并且似乎仍然没有返回“The Wok”。
可选参数
rankby - 指定列出结果的顺序。请注意,如果指定了radius(在上面的必需参数下描述),则不得包括rankby。可能的值有: