我正在使用“plot_google_map.m”,它使用Google Maps API在当前数字的背景中绘制地图。使用此图生成的图形会在缩放事件时自动刷新地图,并且我添加了一些代码以使其在平移事件时刷新数据。
现在我想以编程方式更改轴的范围而不使用缩放或平移按钮,但问题是地图未自动刷新。所以,我正在考虑以编程方式生成缩放或平移事件,但我还没有找到一种方法。 对此有何想法?
让我详细说明我的问题。 在'plot_google_map.m'中,有一个子函数,它是缩放事件的回调。
function plot_google_map
% Listen to Zoom events
h = figure(1); plot(1:10);
hz = zoom(h);
set(hz,'ActionPostCallback',@mypostcallback);
function mypostcallback(obj,evd)
disp('Refreshes map data');
我想要做的是,在'plot_google_map'之外调用此子功能。
欢迎任何想法,并提前感谢您的答案!
答案 0 :(得分:3)
您听说过zoom
命令?
>> help zoom
zoom Zoom in and out on a 2-D plot.
实际上似乎是程序识别你缩放的方式。
答案 1 :(得分:0)
假设您的轴处理是hAxes
,那么您可以通过更改轴的xLim
和yLim
属性而不是缩放比例来进行缩放,如下所示:< / p>
如果您的绘图使用0-100的x轴,那么您可以放大特定的子范围og 0-100,例如:
set(hAxes,'xLim',[20 40])
并且对于y轴,您可以放大特定的y范围:
set(hAxes,'xLim',[30 70])
如果你想放大图上的特定区域,例如x [20-50],y [10-50],你可以通过执行前两个操作来完成:
set(hAxes,'xLim',[20 50])
set(hAxes,'yLim',[10 50])
如此,根据您的绘图或图片的大小更改斧头的xLim
和yLim
值,这就是实际使用轴进行缩放的方式。
您甚至可以尝试这个演示脚本:
clear;clc;
figure;
h = axes;
y = sin( 0:2*pi / 100:pi );
plot(y);
%// =============================
pause(1);
set(h , 'xlim' , [20 80]);
%// =============================
pause(1);
set(h , 'xlim' , [30 40]);
%// =============================
pause(1);
set(h , 'xlim' , [10 100]);
%// =============================
pause(1);
set(h , 'ylim' , [.1 .4]);
%// =============================
pause(1);
set(h , 'ylim' , [.2 .7]);
%// =============================
pause(1);
set(h , 'ylim' , [.3 .9]);
%// =============================
pause(1);
set(h , 'ylim' , [.1 .2]);
set(h , 'xlim' , [10 80]);
%// =============================
pause(1);
set(h , 'ylim' , [.3 .7]);
set(h , 'xlim' , [40 90]);
%// =============================
答案 2 :(得分:0)
为什么不在每次更改轴范围后再次调用plot_google_map? 这将导致使用新范围更新地图。