0

私はフリート追跡会社で働いており、サービス コールを表すすべての画鋲をマップに配置すると、Bing マップ全体が使用不能な速度まで遅くなります。マップをドラッグするときに移動する必要がある DOM 要素の数に関係があると理論付けています。一度に数十台の車両と数百台のサービス コールがマップ上に表示される場合があります。

これを回避するために、カスタムTileLayerのソースを作成してサーバーに送信し、プッシュピンがタイルに表示されるようにタイルを作成します。MouseOverこれまでのところ、タイル上にある「画鋲」のイベントを行う方法がわからないことを除けば、とても良いです。

DOM 要素を追加せずに、マップ上の特定の場所で Mouse イベントを発生させる方法を探しています。

確実ですが、おそらく信じられないほど遅い方法は、MouseOverマップ オブジェクト全体にイベントを設定して、マウスがどのサービス コールに近づいているかを確認することです。マウスが十分に近ければ、その方法でイベントを呼び出すことができます。私は本当にこれを避けたいです。

マウスイベントを発生させることができる簡単に移動できる要素(再描画する必要がない要素)を期待して、定義された高さ/幅でアイコンなしのプッシュピンを追加しようとしましたが、役に立ちませんでした。イベントは発生しません。

4

1 に答える 1

0

考慮すべき点がいくつかあります。

1: こんなに小さな地図にそれだけの情報を表示する必要がありますか? つまり、Web マッピングのベスト プラクティスでは、最適な方法で読みやすさを維持することを推奨しているため、クラスタリングは興味深いオプションかもしれませんが、追跡シナリオで 1 つの車両または人を選択した後、インタラクティブな画鋲のみを表示するようにユース ケース シナリオを再検討する必要があります。

クラスタリングを使用する必要がある場合は、サーバー側のクラスタリングを使用して行う必要があるため、マップ コントロールに表示できるものだけをダウンロードする必要があり、ダウンロードする必要があるデータの量が減り、最適化されます。クライアント側でのパフォーマンス (管理が必要な要素の量が少ない)。

2: タイル レイヤーを作成する場合は、ベクター情報ではなくビットマップ情報を使用していることを意味します。あなたのためのいくつかのアプローチがあるかもしれません:

  • マップのクリックを使用して、クリックに対応する座標を取得し (ピクセル -> ジオ)、Web サービスを呼び出して、特定の領域に表示されるイベントまたは要素に関する完全な情報を取得します。
  • マップ クリックを使用しますが、Web サービスを使用するのではなく、クライアント側で操作します。これに加えて、Canvas 要素を使用してマップ コントロールに画鋲や情報を描画できるため、対話を維持し、クライアント側のイベントや操作に基づいてレンダリングをカスタマイズできます。これは公式にはサポートされていませんが、ユースケースによってはうまく機能します。

要素数の制限は、Bing Maps プラットフォームではなく、主にブラウザーに関連しています。IE8 で他のマッピング コントロールを使用して同じことを試みると、ユース ケースに直接関連する同様の悪い経験が発生します。

于 2013-01-28T08:05:48.597 に答える