{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508994953,"data":{"id":71713910,"title":"17.4 视图管理","slug":"dcg5rq","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"

说明

视图对应类为Display,整合地图device、mapview、card等组件管理能力和数据处理模型,完善生命周期管理,提供内聚数据处理能力;并提供同步能力。

前序文档

地图服务初始化

服务初始化&反初始化

时序图

视图创建

Display进行渲染绘制需要绑定surface,绑定分为两种模式:

视图销毁

关键参数

com.autonavi.gbl.multi.model.DisplayCreateParam

参数名

说明

displayType

视图类型,主屏目前只允许一个

displayAttribute

视图属性

deviceAttribute

设备属性

surfaceAttribute

surface属性

displayObserver

视图观察者

sceneObserver

场景页面的观察者(只允许主屏设置)

mapviewProxy

地图引擎代理

com.autonavi.gbl.multi.display.model.DisplayType定义,分为主屏、hud、放大路口、鹰眼屏等。

com.autonavi.gbl.map.model.EGLSurfaceAttr.display

取值

含义

-1

为默认屏幕

其余

需要由系统方提供display ID

com.autonavi.gbl.map.model.EGLSurfaceAttr.nativeWindow

取值

含义

MapHelper.getWindowFromSurface

一般通过getWindowFromSurface获取

com.autonavi.gbl.map.model.EGLSurfaceAttr.isNeedAttach

通过接口MapHelper.getWindowFromSurface进行获取。

取值

含义

true

立马attach,应用场景为surface已经创建好的情况

false

延迟attach,应用场景为surface比Display后创建,在surface创建好后在添加。

地图设备创建参数

com.autonavi.gbl.multi.model.DisplayAttribute.displayId

参见 com.autonavi.gbl.map.model.MapViewParam.engineId

\u0000\t地图视图创建参数

地图视图观察者,外部可以指定IBLMapViewProxy。Android都需要设置。


核心接口

// 创建视图\nDisplay com.autonavi.gbl.multi.display.MultiDisplayService.createDisplay(DisplayCreateParam displayCreateParam)\n\n// 销毁\nvoid com.autonavi.gbl.multi.display.MultiDisplayService.DestroyDisplay(Display disp) 

调用示例

    public Display createDisplay(DisplayType displayType, DisplayAttribute displayAttribute, EGLSurfaceAttr surfaceAttr, IMapDisplayObserver displayObserver, IBLMapViewProxy mapviewProxy) {\n        DisplayCreateParam param = new DisplayCreateParam();\n        param.setDisplayType(displayType);\n        param.setDeviceAttribute(devAttribute);\n        param.setDisplayAttribute(displayAttribute);\n        param.setSurfaceAttribute(surfaceAttr);\n        param.setMapviewProxy(mapviewProxy);\n        param.setDisplayObserver(displayObserver);\n        Display display = displayService.createDisplay(param);\n        return display;\n  }\n    \n    // 延迟attach调用,在 android进行surface创建时绑定surface。\n    // 需要在surfaceCreated时进行添加的赋值。\n    public void surfaceCreated(SurfaceHolder holder) \n    {\n        EGLSurfaceAttr surfaceAttr = new EGLSurfaceAttr();\n        surfaceAttr.display = -1;\n        surfaceAttr.nativeWindow = MapHelper.getWindowFromSurface(holder.getSurface());\n        surfaceAttr.width = this.getWidth();\n        surfaceAttr.height = this.getHeight();\n        surfaceAttr.shareDeviceID = -1;\n        surfaceAttr.isBackSurface = false;\n        surfaceAttr.isNeedInitDraw = true;\n        surfaceAttr.isOnlyCreatePBSurface = false;\n        surfaceAttr.isNativeWindowFromSurface = true;\n        // Display为上面创建好的对象。\n        Display.getMapDevice().attachSurfaceToDevice(surfaceAttr);\n        this.initNetworkState();\n    }



","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-08-23 02:30:30","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":203,"collectCount":0,"estimateDate":7,"docStatus":0,"permissions":true,"overView":false}}