2016-11-29 7 views
0

私はここでmap sdkを使用します。私は16500とのdbファイルを持っている!パス(点の座標)。私はマップ上のすべてのパスを描画する必要があります。しかし、私は、パスの大きな数を取得しようとすると、ここにマップ上のすべてのpoplilynesオブジェクトを追加しようとすると、それは膨大な時間がかかると思う。マップ全体にパスのレイヤーを追加します

ヘルプは、最適なソリューションを見つけることができます。

答えて

1

私は目に見えるビューポートに基づいてデータをフィルタリングし、大陸(または大陸レベル)にはあまり意味がないところでこの機能を無効にします。

地図がズームレベル16または17(地方レベル)に表示されている場合、getBoundingBox()を使用してMapインスタンスからGeoBoundingBoxとしてビューポートを取得できます(mapView.getMap()など)。 GeoBoundingBoxを使用すると、いくつかのcontains()メソッドが存在するため、自分のオブジェクトとの衝突を簡単にチェックできます。

ビューポートと衝突するものはすべて表示する必要があります。他のすべては無視されます。

あなたは()getMapGesture経由MapGestureを(取得)とaddOnGestureListener(経由でイベントをズームするために聞く)MapクラスにOnTransformListenerのリスニングのいずれかとするたびにマップビューポートの変更を更新したりMapGestureイベントを登録することができます

の場合フィルタリングするデータの量がまだ大きすぎる場合は、パーティション化(リージョンベースは私の最初のアイデアとなる)のような効率的なフィルタリングのためにデータを準備することも考えて、データのサブセットのみをフィルタリングする必要があります。

+0

ありがとう、これは最高の解決策です。私はこのプロセスを実装しようとします –

関連する問題