导航相关知识3

接下来看下引导模块
从三个方面来写吧,绘制,回调,用户操作

一 绘制:
自定义绘制 各种图标,参考点的调整,主要注意点是防止未释放导致的泄露
PrepareLayerStyleInner这个类里包含了app和sdk交互的绘制接口,自定义地图上的各种图标,自定义view都可以这里定义样式。
可以在 clearLayerItem及clearLayerItems里面加个log,看下释放有泄露,或超过500条了。
log(TAG, "clearLayerItem getUsedTextureCount = {?} , layerId = {?}, layerName={?},item = {?},{?}", pLayer.getMapView().getUsedTextureCount(), pLayer.getLayerID(),
                pLayer.getName(), layerItem.getID(), layerItem.getTypeIdName());

碰撞要不要写下:看下我们自己的view和地图指定区域的碰撞设置

mBizService.setUICollisionRects(mMapView, ARects);

高德文档里对参数描述有问题,arrect 就是

int left, int top, int right, int bottom对应的像素值

二 回调:
1 重算:备选路重算容易导致路线异常刷新,路口图异常消失等,建议屏蔽该条件,或加条件重算
 POIForRequest,pathinfo,NaviPath,都需要主动的及时的调用对应的释放方法,否则内存泄露。

2 切备选:有手动,和自己走上去,这个到还好,但是和 删除回调一起,容易出错
3 删除,首先各个路线拿出来后,要自己释放,其次路线保存
要么直接缓存pathinfo,不用pathresult
要么pathresult删除后,取出来的pathinfo要自己释放,别乱释放,别释放了还拿着他查找 pathid,这个sdk直接抛出异常才对,居然还返回了个默认值。
删除时候要考虑同步删除,且要倒序删除,或Iterator删除。
4 高架上下主辅路:算路时候需要设置更多的参数点位信息,具体不说了,高德文档上查
5 建议path缓存类设为单例,无需释放除非退出算路,或退出引导。太多地方用到了。反正我是单例的。
三 用户操作:这块暂时没想到啥
想到了再补充吧。
还有主页和对外接口呢,明天应该差不多,(接下来要稳定性,app性能,以及  android知识--》通用的知识)得抓紧了

四:补上主页和对外接口部分
看下主页的内容吧,写点注意点吧
比例尺-全览-跟车-车头模式,这四个搞定,基本也就没啥问题了。

1 比例尺
   1.1 巡航和引导动态比例尺要互斥,不然会导致比例尺无规律缩放
   1.2 setZoomLevel、zoomin,zoomout等、setMapMode、goToPosition、showPreview、exitPreview 在动态比例尺情况下需要先锁定在做操作
    否则优先显示动态比例尺的效果。这些操作建议顺序执行,容易导致执行错乱
2 全览,预览 
   默认都会切到正北朝上
   全览有 路线全览,扎点显示全览,引导中路线全览
   全览:showPreview
   预览:setPreviewMode
3 跟车,车头模式,比例尺不正常,往往是误进入了全览,预览模式。(最好标记下全览来源)

就写到这
看下对外接口部分
主要是给语音,桌面提供。
该怎么写呢。
以下几方面:aidl注意点(重连,异常死亡),传输surfaceview,高德路口图的传输的两种方式(截图传数据,aidl传输)
是的,aidl 支持surface 直接传输。加前缀 in即可,默认
1 aidl连接mapview,流程就是客户端创建一个surface(可以用TextureView,也可以是SurfaceView来创建),并将这个surface
传递给sdk的MapDevice里,app死了发个广播,通知重连,另一个项目用的linkto death,不过要注意,下次重连时,时间间隔
要久一点(防止触发多次重连)
2 通过数据传递(后台数据):参考高德的 “后台截图”方案。另一个项目在用,没法位置固定,所以我们放弃了
   所以就没啥经验可谈了。
3 想到再写,至于如何给客户端添加回调等功能,封装成jar包供外部调用等,都是有的。我会把这个内容也传上来,这些应该是通用框架,只需改下里面的接口就能用了,没必要
了解太多细节。

另外 由于高德的服务业务流程基本没啥变化,是不是可以把fragment这一层也给封到下一层去,想拿引导开始。

就是把我的view相关的框架抽出来一层整理下,最终目标是,开发人员只需修改布局文件,而且这些布局文件都统一放到了GuideLayoutCostom 里 里面有各个展示view的创建 和销毁的回调,开发人员可以在这些回调里设置各个view对应的布局及显示层级。具体的逻辑处理和显隐都是隐藏的。

理想状态下:调整下位置,资源图,是不是就搞定新项目了。

毕竟 高德引导这块的流程都是固定不变的,几乎没啥变化,有空弄下。

你可能感兴趣的:(常用知识点分类汇总,android)