0

ストア ファインダーを構築しており、次のワークフローを実装したいと考えています。

  1. ユーザーが場所を入力
  2. Google Geocoder を使用してジオコーディングします
  3. 境界ボックスのジオコーディング結果を調べます
  4. 指定された境界に収まるようにマップをズームインし、それらの境界内の店舗を照会します
  5. マップの境界内に店舗がある場合は、それらをすべてマップに表示します
  6. しかし、マップのバウンディング ボックス内に店舗がない場合は、さらに 1 レベルズームアウトし、いくつかの店舗が見つかるまで (5) を繰り返します。

上記でも構いませんが、お店が見つかるまで実際に地図が動いていないように見える方がUX的には良いと思います。

では、次のように Google マップにクエリを実行することは可能でしょうか:境界ボックスが与えられた場合、Google マップを実際に読み込まずに、その特定の境界ボックスを含む正しくズームされた Google マップの境界を見つけることができますか?

私のページのマップ div の幅に依存するため、それが可能かどうかはわかりません。

geocoder.geocode( {'address': search_text }, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.panTo(results[0].geometry.location);
    map.fitBounds(results[0].geometry.bounds);
    var bounds_to_check_for_stores = map.getBounds();
    // QUESTION: get bounds_to_check_for_stores without the three preceding steps?
    } 
 }
4

1 に答える 1

0

google.maps.LatLngBoundsapi-docには次のメソッドがあります。これにより、境界を拡張して、パラメータとして渡されたポイントextend(point:LatLng)を含むように境界を調整 できます。LatLngこのextendメソッドは、LatLngBounds調整された a を返します。

これにより、次のことができます。

  1. 適切な店舗が見つかるまで、ジオコード ルックアップの範囲を広げます。
  2. 利用したい最寄りの店舗または店舗グループを探します。
  3. マップから現在の境界を取得します: Map.getBounds().
  4. ステップ 2 で選択したストアLatLngBounds.extendのプロパティを使用して、境界を調整するために呼び出します。.geometry.location
  5. 呼び出しMap.panToBoundsてマップのビューポートを変更し、ユーザー エクスペリエンスをシンプルに保ちます。これは、ビューに対する変更が 1 回だけ実行されるためです。
于 2012-05-15T16:02:40.213 に答える