2016-05-07 3 views
0

OSMDroidを使用してAndroidマッピングアプリケーションを開発しています。私は無料のカスタム航空写真を使用しようとしています。これは、Googleおよび/またはbing apiから完全に独立しています。マッピングAPIを使用する任意のソリューションを提案しないでください。カスタムARCGisタイルサーバーを使用しているOSMDroidアプリケーション - タイルはシャッフルされます

が、私はこのコードを含むことにより、衛星画像を表示するために管理している:(?たとえば15-16)

mapView.setTileSource(TileSourceFactory.MAPQUESTAERIAL); 

しかし、タイルサーバは11ズームの上にタイリングを提供していませんが、私はそれよりも近くおしっこ取得する必要があります。

ARCGisタイルサーバーを使用して、16レベルのズームレベルでも衛星画像を表示できますが、タイルはシャッフルされます。

mapControl = (MapController) mapView.getController(); 
mapControl.setZoom(11); 
String[] urlArray = {"http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/"}; 
mapView.setTileSource(new XYTileSource("ArcGisOnline", null, 0, 18, 256, ".png",urlArray)); 

ベースマップタイルはシャッフルされており、緯度/経度に対応していませんが、オーバーレイはOKです。

Basemap tiles are shuffled

答えて

2

タイルサーバは、おそらくタイルを取得するための別のスキームを使用しています。 X座標とY座標を反転させてみてください。滑らかなマップサーバー(osm)は、Z/X/Y.ext形式を使用します。 ArgGisと他のいくつかはZ/Y/X.ext形式を使用しています。その他の座標はすべて同じです。これは、ソリューションが単純であることを意味し、getTileURLStringメソッドをオーバーライドし、サーバーが望むどのようなフォーマットでも座標を提供します。

Osmdroidには、これを行うための例があります。

https://github.com/osmdroid/osmdroid/blob/master/OpenStreetMapViewer/src/main/java/org/osmdroid/samplefragments/SampleCustomTileSource.java

該当ビットこの

mMapView.setTileSource(new OnlineTileSourceBase("USGS Topo", 0, 18, 256, "", 
      new String[] { "http://basemap.nationalmap.gov/ArcGIS/rest/services/USGSTopo/MapServer/tile/" }) { 
      @Override 
      public String getTileURLString(MapTile aTile) { 
       return getBaseUrl() + aTile.getZoomLevel() + "/" + aTile.getY() + "/" + aTile.getX() 
      + mImageFilenameEnding; 
      } 
     }); 

コードまた、それは間違っている座標

+0

パーフェクトを持っているので、この変更後にキャッシュを消去することをお勧めします。それはまさに何が起こっているのかです。 UPVOTED。受け入れられました。 –

関連する問題