В связи с тем что форумы А2 умерли вынужден спросить здесь.
Че то как то я закопался - нужен свежий взгляд на проблему.
Создаю массив локаций считывая все доступные с карты. И нужна маленькая мелочь: отсеять локации которые близко к другу другу, при этом одну из этих близко расположенных оставить в массиве.
Делал разные варианты отсеивания, но для примера остановлюсь на одном:
_FFA_TARGET_LOCATIONS =[]; _FFA_TARGET_LOCATIONS = nearestLocations[markerpos "m1", ["NameCity", "NameCityCapital", "NameVillage"], 15000]; // создаю массив локаций _locationmassivegroup = []; _locationmassive = []; { _locationmassive = []; _xx=_x; //испытуемая локация { _xxx=_x; // локация которая будет проверяться по отношению к испытуемой if ((_xx distance _xxx) < 1000 && (_xx distance _xxx) > 0 && {if(_xxx in _x) exitwith {1}} count _locationmassivegroup == 0) then // проверяю на дистанцию и наличие _xxx в конечном массиве _locationmassivegroup во избежание дублирования { _locationmassive set [count _locationmassive,_xxx]; //создаю субмассив близко расположенных локаций по отношению к испытуемой }; } foreach _FFA_TARGET_LOCATIONS; if ({if(_xx in _x) exitwith {1}} count _locationmassivegroup == 0) then // проверяю наличие испытуемой локации в конечном массиве _locationmassivegroup во избежание дублирования { _locationmassive set [count _locationmassive,_xx]; // добавляю исптуемую локацию в субмассив близкорасполженных к ней локациям if (count (_locationmassive) > 1) then // если субмассив имеет такие близкорасположенные локации { _yy= _locationmassive select (floor random (count _locationmassive)); // выбираем рандомно одну _locationmassivegroup set [count _locationmassivegroup,[_yy]]; // добавляем ее в конечный массив _locationmassivegroup }else{ _locationmassivegroup set [count _locationmassivegroup,_locationmassive]; // если в субмассиве всего только одна испытуемая локация то добавляем ее в конечный массив }; }; } foreach _FFA_TARGET_LOCATIONS; // отображаем локации маркерами на карте { if (typeName (_x select 0)== "LOCATION") then { _m = createMarker["markertown" + (str _forEachIndex),locationPosition (_x select 0)]; _m setMarkerShape "ICON"; _m setMarkerType "DOT"; _m setMarkerText text (_x select 0); _m setmarkercolor "Colorgreen"; }; } foreach _locationmassivegroup; copytoclipboard str _locationmassivegroup; hint str count _locationmassivegroup;
работает неправильно
если можно то обойтись а2 командами, но впринципе не важно - нужен механизм, там уж сам...
Сообщение отредактировал Dimon UA: 19 June 2016 - 23:32