谷歌地图3.0重绘折线闪烁问题

5

我正在绘制一条折线,其中包含着相当多的纬度/经度点(约1000个)。我有两个滑块(开始和结束),允许用户调整时间范围,然后更新折线以显示这两个时间之间的数据。

我的更新算法如下:

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应用于Polyline的抗锯齿算法有关,但是当我移动结束滑块时它不会发生。有人知道是什么原因导致了这种闪烁吗?
1个回答

0

我已经破解了一个看起来暂时可行的解决方案。由于API似乎不喜欢我在前面添加点,因此我尝试保持点数的一致性。

假设我有一组1000个点,我只想显示从200到900。如果我绘制第200个点的位置200次,然后绘制其余数据到点900,它就会停止闪烁。要显示10到330,我会绘制点10十次,然后绘制其余数据到点330。

我猜这与Google内部存储地图线条的方式有关,如果你在线条前面添加内容,它可能必须重新索引整个数组并从头开始重绘线条。

暂时我不会接受答案,以防有人提出更好的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接