繁体   English   中英

Google Maps 3 Redraw Polyline Flickering

[英]Google Maps 3 Redraw Polyline Flickering

我正在绘制具有相当多的lat / lng点(~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的反别名算法有关,但是当我移动结束滑块时它不会这样做。

有谁知道导致这种闪烁的原因是什么?

我已经破解了一个似乎现在有效的解决方案。 我试图保持点数一致,因为API似乎不喜欢我在前面添加点数。

假设我有一组1000点,我只想显示200 - 900.如果我绘制点200的位置200次然后将其余数据绘制到点900,它会停止闪烁。 为了显示10-330,我将绘制点10,10次然后将剩余的数据绘制到点330。

我猜这有点像谷歌内部存储地图线的方式,如果你添加到线的前面,它可能需要重新索引整个数组并从头开始重新绘制线。

我现在不接受答案,因为有人想出更好的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM