Создание интерактивного выбора основной карты

В интерактивном режиме измените основную карту географического глобуса, добавив раскрывающееся меню к рисунку.

Сначала создайте программный файл с именем basemapPicker.m. В программном файле:

  • Создайте географический глобус в рисунке, созданной с помощью uifigure функция.

  • Задайте положение для меню. В этом примере значения x, y, w, и h расположите меню в правом верхнем углу окна рисунка.

  • Задайте основные карты, которые будут включены в меню.

  • Создайте меню. Использование ValueChangedFcn коллбэк, который выполняется при выборе из меню. Коллбэк изменяет основную карту, используя geobasemap функция.

  • Написание пользовательского кода для изменения положения меню при изменении размера рисунка. Для этого отключите автоматическое изменение размера меню. Затем создайте пользовательское поведение путем определения SizeChangedFcn коллбэк. repositionDropdown функция меняет положение меню так, чтобы оно оставалось в правом верхнем углу рисунка.

function basemapPicker
    uif = uifigure;
    gl = geoglobe(uif);
   
    x = 0.8;
    y = 0.9;
    w = 0.2;
    h = 0.1;
    uifW = uif.Position(3);
    uifH = uif.Position(4);
    pos = [x*uifW y*uifH w*uifW h*uifH];

    basemaps = ["satellite" "streets" "streets-light" "streets-dark" ...
                "landcover" "darkwater" "grayland" "bluegreen" ...
                "grayterrain" "colorterrain"];

    dd = uidropdown(uif,'Position',pos,'Items',basemaps);
    dd.ValueChangedFcn = @(src,eventdata)geobasemap(gl,src.Value);

    uif.AutoResizeChildren = 'off';
    uif.SizeChangedFcn = @(src,eventdata)repositionDropdown(dd,x,y,w,h);
end

function repositionDropdown(dd,x,y,w,h)
    fig = dd.Parent;
    uifW = fig.Position(3);
    uifH = fig.Position(4);
    dd.Position = [x*uifW y*uifH w*uifW h*uifH];
end

Запустите программный файл. Измените основную карту на 'colorterrain' с помощью раскрывающегося меню.

См. также

| |

Похожие темы