ページに検索ボックスと Google マップを実装して、顧客が場所のクエリに基づいて検索を実行できるようにしましたが、これまでのところうまく機能しています。ただし、TextSearch を使用すると、ほとんどの場合 (特定のポイントでない限り) 20 件の結果が得られます。ただし、私たちが好むのは、ユーザーの検索に基づいて、より意味のある一連の結果を返すことです (つまり、ユーザーが郵便番号内の教会を検索している場合、郵便番号外の教会を表示すべきではありません)。
場所と半径に基づいて結果にバイアスをかけたり、NearbySearch を使用して場所/半径に基づいて結果を制限したりできることはわかっています。
ただし、当社の顧客は世界中のあらゆる地域で検索を行っている可能性がある全国的なユーザーであるため、ユーザーが検索するまで、どの場所と範囲を制限として設定すればよいかわかりません。クエリに基づいて動的に決定したいと思います。
たとえば、Google マップで「30319 付近の教会」を検索すると、「ジョージア付近の教会」よりもはるかにローカライズされた結果セットが得られます。
クエリの単一点の位置を取得するために、ジオコードを使用して別のクエリを実行することをテストしました。すなわち
getGeneralVicinity = ->
address = $('#address').val()
window.oneq.geocode.geocoder.geocode
address: address,
(results, status) ->
if status is google.maps.GeocoderStatus.OK
console.log(results[0].types)
おそらく、ジオコード結果のタイプ (つまり、地域) を見つけることで、半径を決定し、geometry.location を場所の境界に使用できるようです。残念ながら、これは一貫性がなく、ユーザーが「churches」のみを検索した場合、期待どおりの結果が得られません。
どんな助けでも大歓迎です。