Интерактивное изменение базовой карты географического земного шара путем добавления раскрывающегося меню к рисунку.
Сначала создайте файл программы с именем 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