Показать сообщение отдельно
  #11 (permalink)  
Старый 31.01.2011, 16:21
Интересующийся
Отправить личное сообщение для namo86 Посмотреть профиль Найти все сообщения от namo86
 
Регистрация: 18.11.2010
Сообщений: 19

Сообщение от x-yuri Посмотреть сообщение
namo86, начать стоит с того, зачем столько объектов на карте? Может их можно не все сразу выводить? Расскажи поподробнее
Задача состоит в том, чтобы вывести данные из GPX файла, например такого: http://www.gpslib.ru/tracks/info/130..._14-35-57.html ... Точек: 50357 ... Основная часть данных это координаты трека (google.maps.Polyline), код получился примерно такой:

var point = new google.maps.LatLng
(
	_this.trackData.points[progressCurent].gps.lat,
	_this.trackData.points[progressCurent].gps.lng
);

if( !_this.hasOwnProperty('googleMapTrackPath') )
{
	_this.googleMapTrack = new google.maps.Polyline
	({
		strokeColor: '#2a72a8',
		strokeOpacity: 0.5,
		strokeWeight: 5,
		map: _this.googleMap
	});

	_this.googleMapTrackPath = _this.googleMapTrack.getPath();
}

_this.googleMapTrackPath.push(point)


Как уже писал, если не использовать setTimeout, при выводе браузер просто зависает, невозможно понять, работает он или висит и сколько он ещё будет грузиться. С помощью setTimeout проблема полностью решается, единственный нюанс это время загрузки, но и это думаю не такая уж большая проблема, самый оптимальный вариант как мне видится, увеличить количество обрабатываемых точек за один выполнение функции setTimeout, можно даже подумать насчет автобалансировщика нагрузки, с помощью пресловутой функции (new Date()).getTime(); и в случае быстрого выполнения одного цикла, добавлять максимальное количество обрабатываемых точек.

Кстати если есть материалы по этому поводу, былобы любопытно почитать.
Ответить с цитированием