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.
}
A radarSearch 200のマッチング場所まで戻ります...緯度経度/半径対又は緯度経度範囲のいずれかであり得ます。検索が実際に500の場所に一致する場合、500の場所の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倍の時間がかかります。
アイデアを気に入ってください!さらなるガイダンスが存在しない場合