0

Googleマップを実装しようとしています。パート 1 は、マップを特定の住所に集中させることです。これは非常にうまく機能します。

次の問題は、店舗名の検索に基づいて、地図上に店舗のマーカーを配置する必要があることです。クリックしたときに情報バブルを表示するには、おそらくマーカーを検索結果に接続する必要があります。これをどのように実行するか、私は完全に無知です。

結果付きのグーグルマップ

4

1 に答える 1

1

あなたの手順は私には問題ないようです。店舗名の検索がサーバーに送られ、店舗名と住所を含む結果が返され、Google Geocoding API を使用して検索し、緯度/経度座標を取得してマーカーを配置すると仮定します地図上で、おそらく使用する手順は次のとおりです。

  • マップを作成する
  • 特定のアドレスを中心に
  • 店舗を探す
  • 結果にジオコードが関連付けられている場合は、それを使用してマーカーを配置します。
  • 結果に緯度/経度がない場合は、Google Geocoding API にリクエストを送信して緯度/経度の座標を取得します。その後、マーカーを配置し、受信したジオコードをデータベースに保存します (バックグラウンドの Ajax リクエストを使用して)。

Google Geocoding API のベスト プラクティスでは、Google のサーバーに毎回クエリを実行する必要がないように、ジオコードを保存することを推奨しています。そのためには、バックエンドを変更して、店舗の詳細とともにジオコードも保存する必要があります。検索結果で、利用可能な場合はジオコードを返すことができます。

ちなみに、 GMaps JavaScript ライブラリを使用すると、地図を簡単に操作できます。

アップデート

上記のソリューションは、改訂されたシナリオで完全に機能します。流れをもう一度言い直します。

  1. ストア名で検索すると、バックエンドはストアのリストを返します (これはかなり簡単だと思います)。
  2. 結果が空でない場合は、リストをループして、それらすべてに緯度/経度の値が関連付けられているかどうかを確認します。
  3. レコードの緯度/経度の値が見つからない場合は、店舗の住所を渡すジオコード リクエストを Google のサーバーに送信します (少なくとも店舗の住所が必要です。それ以外の場合は、緯度/経度の値を取得できません)。 Google から) をパラメーターとして使用します。レコードに緯度/経度の値がある場合は、マップ上にマーカーを配置してください。
  4. Geocode API からの応答を受け取ったら、提供されているマップ ライブラリ API を使用してマップ上にマーカーを配置します。GMap の場合はmap.addMarker({...})です。
  5. すべてのリクエストが完了したら、受信したジオコードを自分のサーバーに保存できるようにするために、以前に提案されたビットを最適化することを検討できます。これにより、何度も取得する必要がなくなります。

上記の手順を実装するには、Maps JS ライブラリだけでなく、JavaScript と Ajax/JSONP にも精通している必要があります。すべての Geocode リクエスト (JSONP だと思います) は非同期であり、応答が利用可能な場合 (通常はコールバック内) にのみマーカー配置コードを呼び出す必要があることに注意してください。GMaps ライブラリの例は非常に簡単で、簡単に始めることができます。この説明があなたの問題を解決するのに十分であることを願っています.

于 2012-07-10T13:44:23.710 に答える