Вопрос

Я рисую полилинию с довольно большим количеством точек 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 внутренне хранит линии карты, если вы добавите в переднюю часть линии, ему, возможно, придется повторно индекс целого массива и перерисовывает линию с нуля.

Я не приму ответ сейчас, если кто -то придумывает лучший ответ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top