OSM地图在Android上看起来很混乱

时间:2019-04-25 15:54:28

标签: android maps openstreetmap osmdroid

我正在尝试在Android应用程序上加载OpenStreetMaps,但地图无法正确加载。它们无序显示。

我正在使用可在浏览器中正确加载的自托管地图服务器(演示使用了传单)。

代码如下,

public class MapActivity extends AppCompatActivity {

    final private int MIN_ZOOM_LEVEL = 3;
    final private int MAX_ZOOM_LEVEL = 18;
    final private int TILE_SIZE = 256;
    final private String IMAGE_EXTENSION = ".png";

    MapView map = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //load/initialize the osmdroid configuration
        Context ctx = getApplicationContext();
        Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));

        setContentView(R.layout.activity_map);
        map = (MapView) findViewById(R.id.map);

        map.setTilesScaledToDpi(true);
        map.setMultiTouchControls(true);


        map.setTileSource(new OnlineTileSourceBase("Tiles", 2, 18, 256, ".png",
                new String[] { "http://maps.MY-DOMAIN.com/tile/" }) {
            @Override
            public String getTileURLString(long pMapTileIndex) {

                String url = getBaseUrl()
                        + MapTileIndex.getZoom(pMapTileIndex)
                        + "/" + MapTileIndex.getX(pMapTileIndex)
                        + "/" + MapTileIndex.getY(pMapTileIndex)
                        + mImageFilenameEnding;

                Log.e("MAP",url);
                return url;
            }
        });
    }
}

我最终得到的是,

enter image description here

如何解决此问题?我查看了文档,但对此没有提及。

1 个答案:

答案 0 :(得分:2)

要么图块源是z / x / y与z / y / x,要么y坐标反转了,图块源更接近TMS规范与开放式街道地图使用的草皮地图格式。无论哪种情况,都可以解决问题,清除图块缓存,然后重试