前段时间百度地图API推出了 JavaScript API 极速版 1.0 简单看了一下,从产品定位来说真是挺好。 把开发人员细分成普通web开发人员和移动web开发人员。正好用到了手机地图这块决定尝试一下。先看一下百度地图官方对它的定义。
尊重劳动成功请保留原文地址:http://blog.csdn.net/lbsnews/article/details/29368879
本套百度地图API是专为手机浏览器提供的API,您可使用该套API,在手机页面中展示地图、标注位置、检索poi、查询线路等。
特点:
- 较同一时候兼容PC和手机浏览器的JavaScript API大众版而言,该版更适配移动设备,体积更小,载入地图速度更快,更省流量;
- 较移动端常採用的静态图API,该版本号可载入动态地图,进行地图操作,如拖拽、缩放、检索、线路规划等,更好满足用户对地图的丰富需求。
- 适用手机浏览器类型:Android自带、UC、百度、QQ等主流浏览器。
我是先看的Dome和开发文档,总结的时候才看这个描写叙述。真是个非常轻量的SDK。不要用大众版的标准来要求它。百度地图这个做减法的工作还是非常有针对性的。
假设想先出个Holle World 能够看一下百度地图入门 官方文档。要是做过百度地图大众版本号开发的请继续往下。
一、极速版本号大众版本号创建地图时的差别
- HTML5的定义: <!DOCTYPE html>
- 响应式设计的定义:<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
- 极速版本号type定义: http://api.map.baidu.com/api?type=quick&ak...
二、开发过程中的接口差别
- 接口方面:少了非常多接口,大众版本号的代码不能直接在极速版上这使用。会提示对象没有定义方法。 最明显的就是没有lable对象。仅仅能加入mark。原来定义的复杂标注在这都是使不了,仅仅能通过加入弹出窗体来丰富标注信息。手机专用的touch事件也仅仅保留了两种情况。
- 效率方面:和大众版本号不是一个级别的。考虑到是在手机上执行,绘制标注的数量就须要严格控制。手机窗体中超过50个mark就開始影响正常的放大缩小操作了,还会卡顿。也可能我手机(M2)比較烂。
- BUG:我对V1.0版本号的測试表示强烈质疑,我遇到的问题不是什么犄角旮旯里的错误。一个zoomend事件响应两次。还有Infowindows(弹出窗体)仅仅能指定一个mark实例,说简单点多个mark无法和多个Infowindows相应。 尝试了非常多方式没解决,仅仅能自己新建对象存储信息还要比对出相应关系。弹出的Infowindows窗体在手机上也时常关不掉。不多说了就那几个接口谁用谁知道。
三、完毕的内容
做了一个极速版的原型,处理了上面提到到的几个BUG,优化了mark的绘制,对用极速版开发的朋友会有些帮助。
- 使用百度提供的LBS云作为POI点的管理工具。使用《JavaScript API 极速版》SDK做client开发。
- 解决信息窗体弹出错误问题:在循环加入infowindows的过程中出现仅仅有最后一个弹出窗体可以显示。
- 优化窗体标注载入刷屏问题:地图平移过程中,通过新请求数据和地图上已有的坐标点数据进行比对,推断是否绘制或者删除。在地图放大或者缩小过程中随地图一起清空重绘。
- 控制窗体内绘制标注的数量:绘制过程中通过堆栈的机制,控制标注的绘制顺序过程。可自己定义堆栈大小。
- 解决窗体zoomend事件被二次触发问题。
- 通过自建对象存储须要弹出的info窗体信息,使用坐标比对方式查找相应信息。
- 又一次定义bounds请求范围,解决标注和边框重合。
- 通过百度提供的IP定位接口来进行定位。(很不准)
想要代码的同学请自己通过调试窗体拷贝 topspeedmap.js文件。全在里面没有加密,请保留作者信息。假设找不到脚本文件就留个邮箱吧,我会在我想起来的时候发你一份最新更新版本号。
注意:百度地图文档中提供的方法已经过时了。想预览请參考我以下的步骤。