Страница 1 из 1

Openlayers, добавление .gpx в массив при клике на маркер

Добавлено: 20 сен 2013, 15:23
ballbess
Что есть сейчас:
векторный слой с точками, onSelect на точку 1 включает векторный слой с массивом треков, onUnclick точки 2 - выключает

Код: Выделить всё

select1.onSelect = function(featUre) 
		{		if(featUre.attributes.note == '1') 
  
   			for (var i = 0, l = gpx_list.length; i < l; i += 1) {
   				var features = [];
			    new OpenLayers.Request.GET
				({
       				url: gpx_list[i],
			        success: function(e)
					{
           			features = gpx.read(e.responseText);
		            lgpx.addFeatures(features);
					}
	    		});
			};
			lgpx.setVisibility(true);  
			lgpx.refresh();
			lgpx.redraw(true)

    	};
					
        select1.onUnselect = function(feature) 
		{
       		if (feature.attributes.note == '2') 
			lgpx.setVisibility(false);  
		};


(Сделано именно так чтобы самому разобраться как это работает, но сейчас предел понимания достигнут, поэтому и спрашиваю)

Функционально нужно чтобы по щелчку на точку с прописанным в файле значением тэга note = n+1 к массиву подключался трек N+1.gpx и, соответственно, чтобы на onUnclick массив обнулялся.

Может быть это очень просто, тогда ткните в раздет матчасти - что читать, но лучше если будет работающий пример чтобы покопаться

Re: Openlayers, добавление .gpx в массив при клике на маркер

Добавлено: 22 сен 2013, 23:34
Denis Rykov
Не понял вопроса, вроде все что нужно вы уже написали, или нет?

Re: Openlayers, добавление .gpx в массив при клике на маркер

Добавлено: 24 сен 2013, 11:39
ballbess
Вроде бы все, да, но с синтаксисом у меня беда. Разобрался с добавлением, теперь проблема с удалением - в массиве остаются "лишние" треки, учу матчасть дальше

onSelect работает исправно:

Код: Выделить всё

select1.onSelect = function(featUre) 	{
// Выдергиваем атрибут и добавляем соответствующий файл в ячейку массива с тем же номером
		var g = parseInt(featUre.attributes.note);
                gpx_list[g]=("http://site.com/"+featUre.attributes.note + ".gpx");
    //Проходим по всем *.gpx файлам массива и добавляем объекты в слой
		for (var i = 0, l = gpx_list.length; i < l; i += 1) {
   			var features = [];
			new OpenLayers.Request.GET({
       				url: gpx_list[i],
			        success: function(e){
           				features = gpx.read(e.responseText);
		           		lgpx.addFeatures(features);
					}});};
		lgpx.refresh();
		lgpx.redraw(true)
		};
а вот onUnselect пока мучаю:

Код: Выделить всё

select1.onUnselect = function(feature) {
		var g = parseInt(feature.attributes.note);
		for (var i = 0, l = gpx_list.length; i < l; i += 1) {
   			var features = [];
			new OpenLayers.Request.GET({
       				url: gpx_list[i],
			        success: function(e){
           				features = gpx.read(e.responseText);
		            		lgpx.refresh(features);
		}});};    
		lgpx.destroyFeatures();
		lgpx.redraw(true);
		};