Google Maps 3 RedRaw Polyline Mlickering
-
26-10-2019 - |
Вопрос
Я рисую полилинию с довольно большим количеством точек 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, применяется к полилине, но это не делает это, когда я перемещаю конечный слайдер.
Кто -нибудь знает, что вызывает это мерцание?
Решение
Я взломал решение, которое, кажется, сейчас работает. Я пытался сохранить количество очков в соответствии, так как API, похоже, не любил, добавляя точки спереди.
Допустим, у меня есть набор из 1000 баллов, и я хочу показать только от 200 до 900. Если я нарисую местоположение точки 200, 200 раз, то нарисуйте остальные данные в точку 900, он останавливает мерцание. Чтобы отобразить 10 - 330, я бы нарисовал точку 10, 10 раз, затем нарисовал остальные данные в точку 330.
Я предполагаю, что это имеет что-то, как Google внутренне хранит линии карты, если вы добавите в переднюю часть линии, ему, возможно, придется повторно индекс целого массива и перерисовывает линию с нуля.
Я не приму ответ сейчас, если кто -то придумывает лучший ответ.