百度地图SDK - Android所有Marker点显示在屏幕内

402 阅读1分钟

百度地图SDK - Android所有Marker点显示在屏幕内解决方案

1.地图加载完成回调接口 只会回调一次(适合单次显示全部marker,不适合变化的marker更新)

//调整缩放级别:将所有marker显示在屏幕内
mBaiduMap!!.setOnMapLoadedCallback {
    //设置多有点在一个屏幕里面
    val builder = LatLngBounds.Builder()
    for (latLng in points) {
        builder.include(latLng)
    }
    val mapStatusUpdate = MapStatusUpdateFactory.newLatLngBounds(builder.build())
    mBaiduMap!!.setMapStatus(mapStatusUpdate)
    val msu = MapStatusUpdateFactory.zoomBy(-0.8f)
    mBaiduMap!!.setMapStatus(msu)
}

2.地图渲染完成回调接口 只要重绘就会回调(适合变化的marker更新)

var  isMapRenderComplete=false
//设置地图渲染完成回调
mBaiduMap!!.setOnMapRenderCallbadk{
    if (!isMapRenderComplete){
        isMapRenderComplete=true
        val builder = LatLngBounds.Builder()
        for (latLng in points) {
            builder.include(latLng)
        }
        val mapStatusUpdate = MapStatusUpdateFactory.newLatLngBounds(builder.build())
        mBaiduMap!!.setMapStatus(mapStatusUpdate)
        val msu = MapStatusUpdateFactory.zoomBy(-0.8f)
        mBaiduMap!!.setMapStatus(msu)
    }
}