【问题标题】:How to hide base map in google map android?如何在 google map android 中隐藏底图?
【发布时间】:2020-06-06 04:46:23
【问题描述】:

我想在 google map v2 中隐藏底图 因为我将 osmdroid 中的 Tile Overlay 添加到 Google Map 这是我的代码:

    mMap = googleMap;
    mMap.setMyLocationEnabled(false);
    mMap.getUiSettings().setZoomControlsEnabled(false);
    mMap.getUiSettings().setMyLocationButtonEnabled(false);
    mMap.getUiSettings().setMapToolbarEnabled(false);
    mMap.getUiSettings().setCompassEnabled(false);
    mMap.setMaxZoomPreference(19);
    String mUrl = "https://a.tile.openstreetmap.org/{z}/{x}/{y}.png";
    MyUrlTileProvider mTileProvider = new MyUrlTileProvider(256, 256, mUrl);
    mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mTileProvider).zIndex(0));

但是当 zoom_in 或 zoom_out 时,它首先从谷歌地图加载图块,然后从 osm 加载图块。 我希望隐藏显示的基本地图,并且只从 osmdroid 加载图块。

【问题讨论】:

    标签: android google-maps openstreetmap


    【解决方案1】:

    最简单的方法是使用GoogleMap.setMapType() 方法并将地图类型设置为MAP_TYPE_NONE:

    @Override
    public void onMapReady(GoogleMap googleMap) {
        googleMap.setMapType(GoogleMap.MAP_TYPE_NONE);
        ...
    }
    

    但您也可以创建自定义GroundOverlay,它是由所需背景颜色填充的纯色位图,并将其准确放置在当前屏幕视图中(详细信息您可以找到例如this 答案),甚至可以创建自定义MapView-基于组件和override its onDraw() 方法并使用Canvas 对象将其填充为纯色(例如白色):

    ...
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawColor(Color.WHITE);
    }
    ...
    

    【讨论】:

    • 嗨。谢谢。有没有更好的方法在 Google 地图中显示 OSMdroid?
    • @MehrdadLatifi 只需使用原始 OSMdroid 库,就像在 this example 中一样,如果您只需要 OSMdroid,则根本不需要 Google 地图。而且,您似乎可以接受答案(在答案评分下方设置“复选框”)。
    猜你喜欢
    • 2013-05-31
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多