Google Maps 3 Перерисовка полилинии Мерцание - PullRequest
3 голосов
/ 19 октября 2011

Я рисую полилинию с довольно большим количеством точек широты / долготы (~ 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 голосов
/ 19 октября 2011

Я взломал решение, которое сейчас работает.Я старался, чтобы количество баллов оставалось неизменным, поскольку API, похоже, не нравилось, когда я добавлял баллы вперед.

Допустим, у меня есть набор из 1000 точек, и я хочу показывать только от 200 до 900. Если я нарисую местоположение точки 200, 200 раз, то перетаскиваю остальные данные в точку 900, она останавливаетсямерцаниеЧтобы отобразить 10 - 330, я бы нарисовал точку 10, 10 раз, а затем перевел остальные данные в точку 330.

Я полагаю, что это как-то так, как Google внутренне сохраняет линии карты, если вы добавитеперед строкой может потребоваться переиндексировать весь массив и перерисовать строку с нуля.

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

...