Google Places API提供了一个radarSearch method,它接受单一类型和面积约束。面积约束可以是经纬度/半径对或经纬度范围...Google Places radarSearch获取最接近的100个地方
var request = {
location: latlng, // where latlng is a google.maps.LatLng
radius: 2000, // meters
type: placeType // e.g. 'restaurant' or 'gas_station', etc.
}
或
var request = {
bounds: latlngbounds, // google.maps.LatLngBounds
type: placeType // e.g. 'restaurant' or 'gas_station', etc.
}
一个radarSearch与上述任何请求将会返回多达200米匹配的地方。如果搜索结果实际上匹配500个地方,则500个地方中只有200个地方包含在回复中。似乎没有一种明显的方式来影响哪些200位置被返回。初步测试显示它是随机的,但可能偏向于返回离中心最远的地方。
问题是...我只对感兴趣 100个地方。是否有支持的方法来排序500个匹配的地方并返回前200个?我使用“rankBy”属性试过,但它似乎被忽略......
var request = {
bounds: latlngbounds, // google.maps.LatLngBounds
type: placeType // e.g. 'restaurant' or 'gas_station', etc.
rankby: google.maps.places.RankBy.DISTANCE,
}
,以确保正确的反应的唯一方法是做一个小面积的初始搜索,并先后增加边界和重新搜索,直到我得到至少100个地方,但不超过200个地方。然后,我可以在JS中排序并切片到100以获得我最近的100个位置。是否有更高效的算法来获得相同的结果?
Google最近弃用了'types'属性,其中可以指定几个匹配类型的数组。目前,只支持'type'属性,其中只能指定一种搜索类型。我需要支持一些场所类型,现在必须对每种场所类型进行单独搜索并合并。这一变化显着影响了我的应用程序的性能。采用上述方法,少量地点类型需要1-3秒,而每个地点类型需要20-30秒以内的单独搜索。
例如,是否有更好的方法来获得最近的100个“酒吧”,“餐馆”或“咖啡馆”?随着Google的变化,现在需要10倍的时间才能获得结果。
欣赏任何想法!