В связи с тем что форумы А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












