前言
之前项目需要整合定位组件,于是将高德和腾讯都统一整理了一下,其中不可避免的需要将logo隐藏。但是地图api并没有提供隐藏logo的方法,只有设置logo的margin的方法。
腾讯地图
遍历图层找到logo隐藏即可。
class TextureTMapView: MapView {
constructor(context: Context) : super(context)
constructor(context: Context, options: TencentMapOptions?) : super(context, options)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(
context: Context,
attrs: AttributeSet?,
options: TencentMapOptions?
) : super(context, attrs, options)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
constructor(
context: Context,
attrs: AttributeSet?,
defStyleAttr: Int,
options: TencentMapOptions?
) : super(context, attrs, defStyleAttr, options)
init {
this.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
getChildAt(1)?.visibility = GONE
viewTreeObserver.removeOnGlobalLayoutListener(this)
}
})
}
}
高德地图
高德地图也可以用腾讯地图那样,移除图层,但是我看了几个博客,他们提供的getChildAt的index并不一致,我也没去尝试,不过应该找对了index也是可以隐藏的。或者有的人判断子view是imageview直接隐藏。
在地图初始化之后,将logo移出地图之外
init {
mapView?.map?.uiSettings?.setLogoBottomMargin(ExtendUtil.dip2px(context, -100f))
}
后序
替换地图sdk的工作量还可以,两个地图api很相近,只有个别有差异,完美替换不是难题。
|