В интерактивном режиме измените основную карту географического глобуса, добавив раскрывающееся меню к рисунку.
Сначала создайте программный файл с именем 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'
с помощью раскрывающегося меню.
geobasemap
| geoglobe
| uidropdown