Android 高德地图去掉 logo

我们先看看官方:

https://lbs.amap.com/api/android-sdk/guide/interaction-with-map/control-interaction/

Android 高德地图去掉 logo_第1张图片

说的很清楚了,不可移除,只支持调整到固定位置。

然而,也并不是没有办法,方法可参考 https://blog.csdn.net/qq_29011851/article/details/78460347


方法1、重写 MapView

public class MyTextureMapView extends TextureMapView {

    private Context context;

    public MyTextureMapView(Context context) {
        super(context);
    }

    public MyTextureMapView(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
        init(context);
    }

    public MyTextureMapView(Context context, AttributeSet attributeSet, int i) {
        super(context, attributeSet, i);
        init(context);
    }

    public MyTextureMapView(Context context, AMapOptions aMapOptions) {
        super(context, aMapOptions);
        init(context);
    }

    private void init(Context context) {
        this.context = context;
        // view 加载完成时回调
        this.getViewTreeObserver().addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    ViewGroup child = (ViewGroup) getChildAt(0);//地图框架
                    // child.getChildAt(0).setVisibility(View.VISIBLE);//地图
                    child.getChildAt(1).setVisibility(View.GONE);//logo   
                }
            });
    }
}

然后重新引用此类,将可以成功隐藏此 logo。


方法2、获得 MapView 后直接监听 Layout

mapView = findViewById(R.id.map);
mapView.getViewTreeObserver().addOnGlobalLayoutListener(
    new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                ((ViewGroup) mapView.getChildAt(0)).getChildAt(1).setVisibility(View.GONE);
                mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            }
        });
// 此方法必须重写
mapView.onCreate(savedInstanceState);

这样就可以隐藏 logo 了,TextureMapView 和 MapView 隐藏 logo 的方法是一样的。


小技巧:
        大家可以通过 ViewGrouop 的 getChildCount() 得到 MapView 子控件的个数,再通过
 getChildAt(int index).setVisibility(View.GONE) 逐个调试查看哪个子控件被隐藏了。

 
 
 
 
 

你可能感兴趣的:(地图开发)