javascript - 谷歌地图3重绘折线闪烁

标签 javascript google-maps google-maps-api-3 polyline google-polyline

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

我的更新算法是这样的:

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);

现在奇怪的是,当我拖动结束 slider 时,线条会按预期重绘,但是当我拖动开始 slider 时,它会正确重绘线条,除非在高缩放级别下线条的部分似乎略有移动(它没有当放大关闭时)。我认为这可能与谷歌应用于折线的抗锯齿算法有关,但当我移动结束 slider 时它不会这样做。

有谁知道是什么导致了这种闪烁?

最佳答案

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

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

我想这与 Google 内部存储 map 线条的方式有关,如果您添加到线条的前面,它可能必须重新索引整个数组并从头开始重新绘制线条。

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

关于javascript - 谷歌地图3重绘折线闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815154/

相关文章:

html - 谷歌地图(现代)集成

php - 使用 PHP 将 MySQL 变量插入 Google map

google-maps-api-3 - 在打开另一个之前关闭信息窗口

javascript - Google Maps API - 多个 map 的多个标记

javascript - 在 PhantomJS 中运行 Javascript 自定义函数

javascript - reactjs - 为什么通过父属性和组件 onChange 更新表单值状态?

javascript - angular.isdefined 有什么好处?

php - 激活 PHP 函数的提交按钮

google-maps - watchPosition() 和 getCurrentPosition

javascript - 在 Google map API 中向圈子添加文本不起作用