2013-01-14 5 views
5

Google Maps APIを使用して現在のFigureの背景にマップをプロットする "plot_google_map.m"を使用しています。これで生成されたFigureは、ズームインするとマップが自動的にリフレッシュされ、パニングイベント時にデータをリフレッシュするためのコードがいくつか追加されました。MatLabでズームイベントをプログラムで呼び出す方法は?

ズームやパンボタンを使わずに軸の範囲をプログラムで変更したいのですが、地図が自動的に更新されないという問題があります。だから、私はプログラムでズームやパンのイベントを生成することを考えているが、私はそれを行う方法を見つけていない。 これに関するご意見はありますか?

私の質問を詳しく教えてください。 'plot_google_map.m'には、ズームイベントのコールバックであるsubfunctionがあります。

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

'help axis'にはズームに必要な情報が含まれていますか? –

答えて

0

hAxesである、あなたは、次のように、あなたの軸のxLimyLimプロパティではなく、ズーム比を変化させることにより、ズーム操作を行うことができます。

あなたのプロットは、x軸を使用している場合0-100からあなたは、例えば、特定のサブ範囲OG 0-100にズームインすることができます。あなたは、特定のY範囲にズームすることができy軸用

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

また:

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

、あなたは例のX [20-50]、Y [10-50]のために、プロット上の特定の領域に拡大したい場合は、次のような前の2つのアクション実行することによってそれを行うことができます。

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


ので、あなたのプロットのサイズや、あなたのイメージに応じて、斧のxLimyLim値を変更し、それが軸と仕事をズームする方法、実際のです。

あなたも、このデモスクリプトを試すことができます。

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]); 
%// ============================= 
+0

ありがとうSameh。私はあなたの提案を試みましたが、 'xTick'の設定は軸のラベル付けだけを変更します。 –

+0

@シーウォーノー..「xTick」や「yTick」ではなく、「xLim」と「yLim」です。 –

+0

@SungwooNoh、私はコードを修正し、軸をズームするためのデモを追加しました。 –

3

あなたはzoomコマンドについて聞きましたか?

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

実際には、プログラムがあなたのズームを認識する方法です。

+0

bdecafありがとうございますが、まだこの問題を解決する方法が見つかりませんでした。そこで私の問題を説明するためのコード例をいくつか追加しました。これも見てください。 –

+1

'get(hz、 'ActionPostCallback')'を使って元のFigureハンドルを取得した場合、それを実行できないはずですか? – bdecaf

+0

素晴らしい!これは私が探していた正確な解決策でした。今私は、ズームのコールバックのハンドルを取得し、取得されたハンドルを使用して実行する方法を知っている。ありがとうbdecaf。 –

0

軸の範囲を変更するたびにplot_google_mapを再度呼び出してみるのはなぜですか? これにより、新しいエクステントでマップが更新されます。