2011-09-28 6 views
11

私は2つのアクティビティを持つマッピングアプリケーションを作成しました.1つのアクティビティはGoogle Mapsビューを表示し、もう1つはosmdroid 3.0.5 jarを使用して同等のビューを表示します。Osmdroidでピンチして

これまで私はエミュレータだけをテストしていましたが、表示された領域とオーバーレイデータの点で機能は完全に同じです。今私は実際のジンジャーブレッドデバイスでアプリを走らせました。私は、Google Mapsの動きがピンチをズームするのをサポートしているように見えますが、Osmdroidのものはそうではありません。

私は、Google側やOsmdroid用にズームするためのピンチに固有のコードは書いていません。どちらのアクティビティもOnTouchListenerを実装しています。 Osmdroid活動での私のMapViewがクラスである

@Override 
public boolean onTouch(View v, MotionEvent e) { 
    // chain it for now 
    return false; 
} 

org.osmdroid.views.MapView

誰もがピンチをズームするようにする方法を知っていますように、両方の活動は、ちょうどOnTouchのスタブを持っていますosmdroidを使って作業するか、osmdroidを使ってサンプルアプリケーションを知っていて、私が研究して自分のアプリに適応させることができますか?

答えて

3

Osmdroidにはズーム機能があります。ピンチアクションを確認するには、gesturelistenerを設定する必要があります。その時点で、osmdroidでズーム機能を呼び出す必要があります。私はosmdroid 3.0.5と考えています。

mOsm.getController.setZoomLevel(someNumber)(mOsmはマップビューのインスタンスです)です。

私はズーム機能を反対のピンチに作用させます(指を近づけてから開きます)。 - 完成したブールはに把握するために、私は私のプログラムで実装何かある

boolean finished = false; 

@Override 
public boolean onTouch(View v, MotionEvent e) { 

    switch (e.getAction()) { 

     case MotionEvent.ACTION_DOWN: 
      finished = false; 
      break; 

     case MotionEvent.ACTION_MOVE: 
      finished = false; 
      break; 

     case MotionEvent.ACTION_UP: 
      //action is finishing at this point, so now I can do my refreshActionOnMap(); 
      if (!finished) 
       refreshActionOnMap(); 
      break; 
    } 
    return true; 
} 

私はピンチで取引を追加したコード:(あなたが現在行っているように)、このような何かをやって、私はMotionEventを使用することをお勧め地図をリフレッシュしてください。それはあなたをもっと助けるはずです。

Hereです。

何か違うものをお探しの場合は、hereをお試しください。 Androidは明らかに2010年6月以来、ピンチアクションをサポートしてきました。

+0

ありがとうございました。リンクが役立つと思います。私は、Google Mapsの活動(MapsActivity)が舞台裏でピンチを実装しなければならないと思う。もちろん、そのコードはクローズドソースなので、実装をコピーするのではなく、ちょっとした作業が必要です。 +1リンク。 – NickT

+0

私のプログラムでそれを実験したところ、上のコードは私のために働いています。それがもっと役に立つなら、++! – digerati32

+2

私はそういうIDIOTでないなら、それはすぐに働くでしょう!私はmMapVw.setMultiTouchControls(true)という行を見逃しました。私は確かにそれで私自身の質問に答えるつもりはない。だから時間を無駄にしてくれる人たちを止めるために、私が思考してくれて感謝して、私はあなたの答えを受け入れます。 – NickT

31
MapView.setBuiltInZoomControls(true); 
MapView.setMultiTouchControls(true); 
+5

これはうまく実装されていますが、動作します。 – Warpzit

+5

2本の指を動かしているときにズームがうまくいるように見えますが、持ち上げるとすぐにマップが別の位置にジャンプします。 @Warpzitこれはあなたが「実装が貧弱」という意味ですか? –

+0

@DavidDoriaはい、それは意図したとおりに動作しません:) – Warpzit

2

地図の中心にズームするのではなく、2本の指の中ほどにズームすることはできますか?

+0

あなたは良い解決策を見つけましたか?はい、私の質問にお答えください私の質問http://stackoverflow.com/questions/15626091/osmdroid-and-pinch –

+0

unfortunatelいいえ、私はここにも多分いつかそれが解決される質問を尋ねた:) http:// stackoverflow。 com/questions/15159544/two-finger-or-pinc-zoom-to-mapview-in-osmdroid – ismail

関連する問題