zengqh 百度地图是怎么实现的?
来源:互联网 发布:淘宝打电话说欠保证金 编辑:程序博客网 时间:2024/05/18 02:09
http://www.cnblogs.com/zengqh/p/3583144.html
毕业的时候进入过gis相关的领域,尽管之后专攻rendering,但也遇到了地图渲染相关的问题。
用opengl es 2实现过一版矢量地图,所有的东西都是gl画的,包括路,文字,天空,模型等等,采用现实3d建模,
使用 2x 4x msaa 来解决搞锯齿的问题,速度很快,手机上一般70—100 fps, 拖动非常流畅。
但是发现百度地图描画的数据量是非常大,很远的地方都画了很多的路背景等等,如果用gl单纯画三角形,这开销
是非常大的,但是发现百度地图非常快,资源占用比较低,综合考虑,不太可能采用我上面的这种方案。
那么百度地图是怎么实现的呢?
我觉得我的猜想基本是对的:
1. 所以的道路背景,在平面上的东西,肯定不是gl画的,是cpu画的,猜测使用agg画的
2. 百度地图使用tile方式,每张tile都是后台线程使用cpu画好后保存成图片的方式,贴上来的。
3. 整个建模采用3d,即相机在空中有xyz,地面使用tile贴图,也就是说图片是用gl画的,单纯画一些纹理,所以开销非常低。
4. 如果图片没有做好,如果上一个比例尺弄好,则先贴一层的,等这一层的tile全部准备好。所以没准备好的地方有一层放大的图片(肯定是图片是吧)
5. 其他的建筑物采用gl画的,就是那些透明的楼层。
6. 文字使用gl画的,贴在路上的文字也是gl画的,路名要根据路的方向实时调整是左右还是上下分布(这个我已经实现)
7. 你们发现没有,楼对于地面是透明的,但楼与楼之间是不透明的。(这个用gl也可以实现)我不知道百度或者其他的是不是和我一样的实现方法
总思路:用agg或者其他后台描画tile, 主线程gl描画生成的tile图片。整体建模采用和游戏一样的方式。2d就是相机90度向下看嘛~~
ps: 考虑到百度地图支持wp8,所以渲染可能综合使用d3d11 level_9_3,这个简单封装一下,比较容易。
- zengqh 百度地图是怎么实现的?
- 百度、Google搜索引擎核心技术是怎么实现的
- 百度人脸识别搜索是怎么实现的
- 百度人脸识别搜索是怎么实现的?
- 在pc电脑上使用地图(百度地图、高德地图等),地图软件是怎么获取pc电脑的所在位置的?
- 关于百度地图的离线地图实现
- 怎么调用百度地图
- 百度地图api的实现
- 百度地图检索的实现
- 百度地图api 怎么禁止百度自己的InfoWindow
- 三维地图是怎么创立的
- 解读百度权重是怎么计算的
- 有哪位大神知道这个地图的框架是怎么实现的
- 百度是怎么了
- 怎么解决android开发的百度地图的签名问题
- 怎么在百度地图标记
- android 怎么去掉百度地图的地址名~~~~~~~~~~~~
- iOS百度地图 定位的实现
- 网络流-最大权闭合图(最小割求解)
- 求模乘法的逆元
- linux设置开机启动
- mvn
- Hibernate框架ORM的实现原理
- zengqh 百度地图是怎么实现的?
- 14846130054444030546
- ShareSDK短链接服务域名更换为l.mob.com
- [v9] phpcms改造:输出sql语句
- JAVA中堆栈和内存分配原理
- 我认为的一条学习嵌入式Linux的路:
- .Net Remoting 入门
- myeclipse10+maven3.2.2+tomcat7环境部署
- POJ 1364 差分约束