Здравствуйте.
В оригинальном интерфейсе сверху справа есть кнопка изменения отображения "спутниковых" снимков карты.
При её переключении карта переводится в режим отображения объектов на карте (без "спутниковых" текстур).
Как сделать тоже самое, при использовании "собственной" карты созданной с помощью RscMapControl ?
Пример миссии:
Код работающий, но с отображением классической карты со слоем "спутника", а он не нужен (спойлер не нашел):
ALTMAP_Markers = ["Marker_0","Marker_1"];
ALTMAP_ShowMarkerIfNear = {
Params ["_control", "_xPos", "_yPos"];
private _MarkerDir = uiNamespace getVariable ["ALTMAP_MarkerDir", 0];
private _MarkerAdd = uiNamespace getVariable ["ALTMAP_MarkerAdd", +1];
private _MarkerSize = uiNamespace getVariable ["ALTMAP_MarkerSize", 2.0];
private _MarkerResz = uiNamespace getVariable ["ALTMAP_MarkerResize", -0.02];
private _posMarkers = [];
{_posMarkers set [count _posMarkers, getMarkerPos _x];} forEach ALTMAP_Markers;
if (_MarkerDir < 2) then {_MarkerAdd = +1;};
if (_MarkerDir > 358) then {_MarkerAdd = -1;};
if (_MarkerSize < 1.2) then {_MarkerResz = +0.02;};
if (_MarkerSize > 1.8) then {_MarkerResz = -0.02;};
_MarkerDir = _MarkerDir + _MarkerAdd;
_MarkerSize = _MarkerSize + _MarkerResz;
uiNamespace setVariable ["ALTMAP_MarkerDir", _MarkerDir];
uiNamespace setVariable ["ALTMAP_MarkerAdd", _MarkerAdd];
uiNamespace setVariable ["ALTMAP_MarkerSize", _MarkerSize];
uiNamespace setVariable ["ALTMAP_MarkerResize", _MarkerResz];
private _tmpScreenToWorld = _control ctrlMapScreenToWorld [_xPos, _yPos];
private _nearestMarkerPos = [_posMarkers,_tmpScreenToWorld] call BIS_fnc_nearestPosition;
private _tmpMarker = "ALTMAP_PathTo";
if ((_nearestMarkerPos distance _tmpScreenToWorld)<25) then {
if ((str (getMarkerPos _tmpMarker)) == "[0,0,0]") then {
_tmpMarker = createMarkerLocal ["ALTMAP_PathTo", _nearestMarkerPos];
playSound "Click";
};
_tmpMarker = "ALTMAP_PathTo";
_tmpMarker setMarkerPosLocal _nearestMarkerPos;
_tmpMarker setMarkerTypeLocal "selector_selectedMission";
_tmpMarker setMarkerColorLocal "ColorYellow";
_tmpMarker setMarkerTextLocal format ["Jump here!"];
_tmpMarker setMarkerSizeLocal [_MarkerSize,_MarkerSize];
_tmpMarker setMarkerDirLocal _MarkerDir;
} else {
if (not ((str (getMarkerPos _tmpMarker)) == "[0,0,0]"))then {
deleteMarkerLocal _tmpMarker;
};
};
true;
};
ALTMAP_Click = {
Params ["_control", "_button", "_xPos", "_yPos", "_shift", "_ctrl", "_alt"];
private _tmpScreenToWorld = _control ctrlMapScreenToWorld [_xPos, _yPos];
private _posMarkers = [];
{_posMarkers set [count _posMarkers, getMarkerPos _x];} forEach ALTMAP_Markers;
private _nearestMarkerPos = [_posMarkers,_tmpScreenToWorld] call BIS_fnc_nearestPosition;
if ((_nearestMarkerPos distance _tmpScreenToWorld)<25) then {
player setPos _tmpScreenToWorld;
};
};
ALTMAP_CloseDisplay = {
Params ["_control"];
_display = ctrlParent _control;
_display CloseDisplay 2;
};
OpenAltMAP = {
_ATLMAP_Display = findDisplay 46 createDisplay "RscDisplayEmpty";
_ALTMAP_Background = _ATLMAP_Display ctrlCreate["RscText", 8001];
_ALTMAP_Background ctrlSetPosition [safezoneXAbs + 0.01, safezoneY + 0.1, safezoneWAbs - 0.02, safezoneH - 0.2];
_ALTMAP_Background ctrlSetBackgroundColor [0.03,0.03,0.09,0.345];
_ALTMAP_Background ctrlSetTextColor [0.99,0.99,0.99,1];
_ALTMAP_Background ctrlCommit 0;
uiNamespace setVariable ["_ALTMAP_Background",_ALTMAP_Background];
_ALTMAP_CloseButton = _ATLMAP_Display ctrlCreate["RscButton", 8002];
_ALTMAP_CloseButton ctrlSetPosition [safezoneWAbs - abs(safezoneXAbs) - 0.01 - 0.01 - 0.04, safezoneY + 0.12, 0.04, 0.04]; // X1: left border 0.01 + right border 0.01 + button width 0.04 + abs(safezoneWAbs), because safezoneWAbs can be negative value!1
_ALTMAP_CloseButton ctrlSetBackgroundColor [0.9,0.1,0.1,0];
_ALTMAP_CloseButton ctrlSetTextColor [0.99,0.99,0.99,1];
_ALTMAP_CloseButton ctrlSetText " < ";
_ALTMAP_CloseButton ctrlAddEventHandler ["MouseButtonClick", "_this call ALTMAP_CloseDisplay"];
_ALTMAP_CloseButton ctrlCommit 0;
uiNamespace setVariable ["_ALTMAP_CloseButton",_ALTMAP_CloseButton];
_ALTMAP_MAP = _ATLMAP_Display ctrlCreate ["RscMapControl", 8003];
_ALTMAP_MAP ctrlSetPosition [safezoneXAbs + 0.02, safezoneY + 0.18, safezoneWAbs - 0.04, safezoneH - 0.42]; // Y1:0.1 + 0.04 (button height) + 0.2 (button top) + 0.2 (space); W:0.02 + 0.02 left/right border; H:0.18 from start + 0.2 Display bottom + 0.02 top space + 0.02 space bottom space
_ALTMAP_MAP ctrlSetBackgroundColor [0.1,0.1,0.1,1];
_ALTMAP_MAP ctrlSetTextColor [0.99,0.99,0.99,1];
_ALTMAP_MAP ctrlCommit 0;
uiNamespace setVariable ["_ALTMAP_MAP",_ALTMAP_MAP];
_ALTMAP_MAP ctrlMapAnimAdd [0.75, 0.045, player];
ctrlMapAnimCommit _ALTMAP_MAP;
waitUntil {mapAnimDone};
_ALTMAP_MAP ctrlAddEventHandler ["MouseMoving", "_this call ALTMAP_ShowMarkerIfNear"];
_ALTMAP_MAP ctrlAddEventHandler ["MouseHolding", "_this call ALTMAP_ShowMarkerIfNear"];
_ALTMAP_MAP ctrlAddEventHandler ["MouseButtonClick", "_this call ALTMAP_Click"];
};
player AddAction ["Open Map with animate markers", "_this call OpenAltMAP"];











