2012-01-03 13 views
1

私はすでにthis answerをチェックしますが、一例は、osmdroidで最大ズームを設定するには?

...私は(私の場合4)を与える限界値よりも大きい ズームレベルのために(私はオフラインモードでよ)灰色のタイルを表示するよりも、他には何もしません予想通り

int zoomLevel = source.getMaximumZoomLevel(); 
Toast.makeText(this, "maxZoom=" + zoomLevel, Toast.LENGTH_SHORT).show(); 

0と4私のコードの間でズームレベルの場合に動作します:

OnlineTileSourceBase source = new XYTileSource("tiles", ResourceProxy.string.offline_mode, 0, 4, 256, ".png", ""); 

次のコードは、maxZoom=4を示し、それは、SDカーから地図タイルをロードd。問題の私の理解では、コードはそれぞれ、検出されたズームして、他のズームが見つからないとき、それはまだズームインのためのすべてのタイルを示すことであるXYTileSourcefinal int aZoomMaxLevel)のコンストラクタで

The API clearly specifies setting the max zoom level:。

public XYTileSource(final String aName, final string aResourceId, final int aZoomMinLevel, 
         final int aZoomMaxLevel, final int aTileSizePixels, final String aImageFilenameEnding, 
         final String... aBaseUrl) 

どのような回避策ですか?私は間違って何をしていますか?ユーザーがレベル4を超えることができないようにズームをブロックするにはどうすればよいですか?

+0

でもosmdroidに従ってください。回避策があれば教えてください。v mapview.setBuiltinZoomControls()を使用するとウィット・ズーム・コントロールを行うのが面倒です。 –

答えて

3

は、我々は全体のapplication.Youに対してグローバル最大zoomlevelを設定するための回避策がosmdroid-アンドロイドプロジェクトでパッケージorg.osmdroid.tileprovider.constantsのファイルOpenStreetMapTileProviderConstantsにご希望のレベルに値を変更する必要が見つかりました。それは正しい方法ではありませんが、私たちのためにはうまく動作します! :)

+0

これはライブラリとしてosmdroidプロジェクトを追加する必要があることを意味します。プロジェクト(つまり、jarファイルではない)、そうではありませんか?プロセスを少し詳しくお聞かせください。私は答えを受け入れることができますか? –

+0

現在、私たちのプロジェクトはosmdroid-androidに依存しています。このプロジェクトをjarとして実装したい場合は、変更してから新しいjarとしてエクスポートすることをお勧めします。 – Dominik

+0

OSMDroidはLGPLなので、これに注意してください。ソースを変更して公開すると、LGPLの下で公開する義務があり、変更されたソースが含まれます。 –

1

あなたは両方org.osmdroid.views.util.constants.MapViewConstants とorg.osmdroid.tileprovider.constants.OpenStreetMapTileProviderConstantsでMAXIMUM_ZOOMLEVELを変更ここ をhere

をjarファイルを構築する方法の詳細intructionを見つけることができなければなりません仕事をしなさい。

SVN http://osmdroid.googlecode.com/svn/branches/release_3_0_5 からosmdroidのソースを取得するこのバージョンをお勧めします。最終的にはズームの限界の横にスクロールリミットパッチを適用しやすくなります。

10

MapViewクラスは、公開関数getMaxZoomLevel()を定義します。 、あなたが最小ズームレベルを必要としませんが、あなたがやった場合

public class ZoomLimitMapView extends MapView 
{ 
    /* snip the constructors */ 

    @Override 
    public int getMaxZoomLevel() 
    { 
     return 4; 
    } 
} 

getMinZoomLevel()MapViewの些細な拡張機能を使用すると、JARにosmdroidソースを再コンパイルすることなく、好きなことを返すようにその関数をオーバーライドできるようになります公開されており、上書きすることもできます。明らかに定数定数4を使用することはおそらく悪い考えです。画像が決して変わらないことが分かっている場合を除き、SharedPreferencesから動的に読み込む方が効果的です。

+0

貴重なjatowler。私はこのコードをどこに置く必要がありますか? – birgit

+0

これはまさに私が探していたものです。ありがとう! – jbc25

+0

これは完全に動作します。私はこれが受け入れられる答えだと思う。 レイアウトファイルでオーバーロードされたクラスに変更する必要があることだけを覚えておいてください。 –

関連する問題