Google API网址类型搜索会返回意外结果

时间:2018-04-06 16:46:36

标签: xml google-maps-api-3 google-nearby

我正在使用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会搜索许多字段(包括评论)以查找关键字的潜在匹配项,因此可能会产生不需要的结果。我正在严格寻找餐馆,而不是其他类型的场所。

1 个答案:

答案 0 :(得分:0)

NearbySearch默认为rankby=prominence,您可能需要rankby=distance。但是,这不会让你指定半径(并且似乎仍然没有返回“The Wok”。

可选参数

rankby - 指定列出结果的顺序。请注意,如果指定了radius(在上面的必需参数下描述),则不得包括rankby。可能的值有:

  • 突出(默认)。此选项根据结果的重要性对结果进行排序。排名将有利于指定区域内的显着位置。地方在Google索引中的排名,全球知名度以及其他因素都会影响到显着性。
  • 距离。 此选项按照与指定位置的距离按升序排列搜索结果。指定距离时,需要一个或多个关键字,名称或类型。