2

近くの ATM の場所をユーザーに知らせる必要がある状況があります。問題は、銀行に 10000 台の ATM がある場合です。

ウェブ プログラミングにマップを使用するときは、通常、ATM は可視エリアにのみロードします。ユーザーがパンまたはズームアウトを行うとき、バックエンド サーバーに追加の ATM を提供し、すべてのオーバーレイ アイテムを再描画するように要求します。しかし、モバイルデバイスでこの手法を使用できるとは思いません。

https://developers.google.com/maps/documentation/android/hello-mapviewのテクニックを使用すると、パフォーマンスが低下します。

これを処理する最善の方法は何ですか? いくつかの懸念があることはわかっています。

  1. すべての ATM をロードすると、メモリが大量に消費されます。
  2. 可視領域に ATM をロードすると、ユーザーがパンを行うときに大量のデータ接続が消費される可能性があります。(目に見える座標境界を取得する方法もわかりません)

私はいくつかの実験をしました。1000 個のオーバーレイ アイテム (ATM) (1000 x itemizedOverlay.addOverlayItem(anAtm); および 1 x populate()) の読み込みに 5 秒かかりました。

これを行う際のベストプラクティスはありますか? Google がデベロッパーにベスト プラクティスを提供してくれることを心から願っています。

ありがとう

4

2 に答える 2

0

あなたはあなたのコードを投稿していないので、あなたが最善のアプローチであると私が信じているものに従っているかどうかはわかりません:

1-itemizedOverlay を作成する

2-itemizedOverlay にすべてのアイテム (ATM) を追加します。

3-populate() を呼び出す

4-結局、 itemizedOverlay を mapview.getoverlays() に追加する必要があります

10000 ATM が既にメモリにある場合、前の手順を実行するのはほぼ瞬時です。マップを移動またはズームするときに、このすべてのマーカーを表示して画面を再描画し続けると、時間がかかる場合があります。

データベースから ATM を取得している場合は、ANR メッセージを取得しないように AsynkTask を使用することをお勧めします。

幸運を。

于 2012-09-30T21:46:54.323 に答える
0

一意のポイントに近いものをグループ化することにより、サーバーから返された ATM のリストをフィルター処理できます。これにより、検索結果表示のスケール依存性を実現できます。

于 2012-08-30T12:03:30.897 に答える