{"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 }