5

Google Maps API を使用して現在の図の背景に地図をプロットする「plot_google_map.m」を使用しています。これで生成された図は、ズーム イベント時にマップを自動更新します。また、パン イベント時にデータを更新するコードをいくつか追加しました。

ズームまたはパン ボタンを使用せずにプログラムで軸の範囲を変更したいのですが、問題はマップが自動的に更新されないことです。そのため、プログラムでズームまたはパン イベントを生成することを考えていますが、それを行う方法が見つかりません。これについて何か考えはありますか?

私の質問を詳しく説明しましょう。「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」の外でこのサブ関数を呼び出すことです。
どんなアイデアでも大歓迎です。事前にご回答いただきありがとうございます。

4

3 に答える 3

3

zoomコマンドについて聞いたことがありますか?

>> help zoom
 zoom   Zoom in and out on a 2-D plot.

実際、それがプログラムがズームを認識する方法のようです。

于 2013-01-14T14:27:53.583 に答える
0

軸ハンドルが であると仮定すると、次のように、ズーム率ではなく、軸のおよびプロパティをhAxes変更することでズームを行うことができます。xLimyLim

プロットが 0 ~ 100 の x 軸を使用している場合、たとえば 0 ~ 100 の特定のサブ範囲を拡大できます。

set(hAxes,'xLim',[20 40])

また、y 軸については、特定の y 範囲をズームできます。

set(hAxes,'xLim',[30 70])

プロットの特定の領域 (x[20-50],y[10-50] など) を拡大したい場合は、前の 2 つのアクションを次のように実行します。

set(hAxes,'xLim',[20 50])
set(hAxes,'yLim',[10 50])


したがって、プロットまたは画像のサイズに応じて ax の値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]);
 %// =============================
于 2013-01-14T13:51:24.330 に答える