2017-01-27 74 views
0

嗨我正在开发小型Android应用程序,我使用谷歌地点API显示附近的地方。我尝试以下请求:获取距离过滤附近的地方使用谷歌地点api

https://maps.googleapis.com/maps/api/place/nearbysearch/json?rankBy=distance&radius=5000&location=19.107991%2C73.001277&key=API_KEY_VAL&type=school 

所以上面的请求返回附近的学校,但这些都没有距离排序。我试着用另一个请求:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?rankby=distance&location=19.107991%2C73.001277&key=API_KEY_VAL&type=school 

以上要求给我距离来分类的结果,但我不能在这种情况下使用radius参数中。

另外我在这两个请求中都面临一些挑战。在第一次请求中,我回复了5公里内的一些学校。在第二个请求中,它将我送回附近的学校。如果我检查这两个结果,附近有些学校不在以半径为参数的请求中。

我的预期输出需要距离排序距离5Km范围内的附近学校。在上述要求中做错了什么?需要一些帮助。谢谢。

+0

[在Android中使用Google Maps API显示当前位置和附近地点以及两地之间的路线]的可能重复(http://stackoverflow.com/questions/8428209/show-current-location-and-nearby-places-和双路由间 - 地方 - 使用 - GOOGL) – Chisko

回答

1

的文档是非常明确的关于rankby和半径参数:

半径 - 定义其范围内返回地方结果的距离(以米为单位)。允许的最大半径是50000米。请注意,半径如果指定rankby =距离(在下面的可选参数下进行说明),则不得包含该值。

rankby - 指定列出结果的顺序。请注意,rankby如果指定了半径(描述在上面的必需参数中),则不得包含该值。

https://developers.google.com/places/web-service/search#PlaceSearchRequests

所以没有办法用结合radius参数与rankby=distance

您示例中的第一个请求忽略rankBy(它也区分大小写),所以您在5公里范围内获得了显着的结果。在这种情况下,可能会忽略不那么显着但接近的结果。

解决方法可能是按距离排序结果,并筛选出location与地点坐标之间的距离大于5000米的所有地方。