0

私はグーグルapi3マップを持っています。アイドル状態では、マップの表示領域の半径を計算し、ajaxリクエストを実行して、xmlドキュメントから表示領域のすべてのマーカーを取得します。

次に、xmlを解析し、現在のマップマーカーをクリアして、新しいマーカーに置き換えます。

これは機能しますが、2つの注意点があります。1)リロード時にすべてのマーカーが点滅します。2)これにより、ユーザーが地図を画面外に移動するのに十分な距離まで移動しなかった場合でも、マーカーをダウンロードして再読み込みします。つまり、すでに画面に表示されているマーカーをリロードしています。

マップの表示領域にあり、まだ画面に表示されていないマーカーのみをプルするための最良の方法は何ですか?

マーカーがたくさんあるので、パフォーマンスをします。

テストURL:http ://whosopennow.com/maintenance/test.php# (Pan to Washington、DC)

4

1 に答える 1

1

マップの境界に国際日付変更線またはマップの折り返しが含まれていないと仮定すると(最小ズームを4程度に設定する必要がある場合があります)、map.getBounds()(テストされていない)を使用して次の手順を実行します。

  1. 常に既存の表示境界を保存します。私はそれを呼びますlastViewable
  2. 表示されている境界が変更されたことが検出されたら、Ajax呼び出しを実行します。
  3. XML内のマーカーごとに、それが外側にある場合は、lastViewableそれを画面に追加します。これらは新しいマーカーです。
  4. ここで、マップがドラッグされたとしましょう。表示可能領域の外側にあるマーカーを削除する必要があります。
  5. lastViewable現在の境界に設定
  6. lastViewableこれらの境界の外側にあるすべてのマーカーを削除します。
于 2012-05-16T22:42:08.207 に答える