В моей программе карт google у меня есть простой парсер KML, который извлекает только координаты и создает для них полилинии, кроме того, в каждой точке создаются маркеры, которые позже используются для редактирования строки. При более длинных маршрутах карта зависает от избытка маркеров. Я понял, возможно, вы можете создавать маркеры, только если кривая превышает 10 градусов? Теперь у меня есть if
, который экранируется только каждый второй момент, но это слабая идея.Как оптимизировать количество маркеров из координат KML?
Иллюстративной распаковка массива:
for (var i=0;i<coords.length;i++) {
if(i!=0&&i!=coords.length-1){
var prevpt = new google.maps.LatLng(coords[i-1].lat, coords[i-1].lng);
var pivot = new google.maps.LatLng(coords[i].lat, coords[i].lng);
var nextpt = new google.maps.LatLng(coords[i+1].lat, coords[i+1].lng);
var marker = createMarker(pivot);
polyMarkers.push(marker);
var path = polyLine.getPath();
path.push(pivot);
}
}
Как рассчитать, что следующий превышает 10 градусов?
Возможно, у вас есть другое представление о том, как его можно оптимизировать?
Спасибо, это удивительный алгоритм, это то, что я искал. В моем примере я нашел реализацию в javascript [link] (http://mourner.github.com/simplify-js/) – roza