5

かなり多数の緯度/経度ポイント (~ 1000) を持つポリラインを描画しています。ユーザーが時間範囲を調整できるようにする 2 つのスライダー (開始と終了) があります。これにより、ポリラインが更新され、2 つの時間の間のデータが表示されます。

私の更新アルゴリズムは次のようになります。

var mvcPath = new google.maps.MVCArray();

for (var i = 0; i < gpsData.length; i++) {

    if (gpsData[i]['timestamp'] <= endDate && 
        gpsData[i]['timestamp'] >= startDate) {
        mvcPath.push(gpsData[i]['location']);
    }
}

this.path.setPath(mvcPath);

奇妙なことに、終了スライダーをドラッグすると線が期待どおりに再描画されますが、開始スライダーをドラッグすると線が正しく再描画されますが、高ズーム レベルでは線の一部がわずかに移動するように見えます (動かない)。これはズームインしたときです)。Google がポリラインに適用するアンチ エイリアス アルゴリズムと関係があるのではないかと考えましたが、終了スライダーを動かしても機能しません。

このちらつきの原因を知っている人はいますか?

4

1 に答える 1

0

私は今のところうまくいくと思われる解決策をハックしました。API が先頭にポイントを追加することを好まないようだったので、ポイント数を一定に保つようにしました。

1000 ポイントのセットがあり、200 から 900 までのみを表示したいとします。ポイント 200 の位置を 200 回描画してから、残りのデータをポイント 900 まで描画すると、ちらつきが止まります。10 - 330 を表示するには、ポイント 10 を 10 回描画し、残りのデータをポイント 330 まで描画します。

これは、Google がマップの行を内部的に保存する方法に関係していると思います。行の先頭に追加すると、配列全体のインデックスを再作成し、行を最初から再描画する必要がある場合があります。

誰かがより良い答えを思いついた場合に備えて、今のところ答えを受け入れません。

于 2011-10-19T00:46:01.083 に答える