首页 > 代码库 > 百度地图 JavaScript API极速版 开发体会

百度地图 JavaScript API极速版 开发体会

     前段时间百度地图API推出了 JavaScript API 极速版 1.0 简单看了一下,从产品定位来说真是挺好。 把开发者细分成普通web开发者和移动web开发者。正好用到了手机地图这块决定尝试一下。先看一下百度地图官方对它的定义。

    本套百度地图API是专为手机浏览器提供的API,您可使用该套API,在手机页面中展示地图、标注位置、检索poi、查询线路等。
特点:

  1. 较同时兼容PC和手机浏览器的JavaScript API大众版而言,该版更适配移动设备,体积更小,加载地图速度更快,更省流量;
  2. 较移动端常采用的静态图API,该版本可加载动态地图,进行地图操作,如拖拽、缩放、检索、线路规划等,更好满足用户对地图的丰富需求。
  3. 适用手机浏览器类型:Android自带、UC、百度、QQ等主流浏览器。
    我是先看的Dome和开发文档,总结的时候才看这个描述。真是个很轻量的SDK。不要用大众版的标准来要求它。百度地图这个做减法的工作还是很有针对性的。

    如果想先出个Holle World 可以看一下百度地图入门 官方文档。要是做过百度地图大众版本开发的请继续往下。

一、极速版本大众版本创建地图时的区别
  1. HTML5的定义: <!DOCTYPE html>  
  2. 响应式设计的定义:<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
  3. 极速版本type定义: http://api.map.baidu.com/api?type=quick&ak...

二、开发过程中的接口区别
  1. 接口方面:少了很多接口,大众版本的代码不能直接在极速版上这使用。会提示对象未定义方法。 最明显的就是没有lable对象。只能添加mark。原来定义的复杂标注在这都是使不了,只能通过添加弹出窗口来丰富标注信息。手机专用的touch事件也只保留了两种情况。
  2. 效率方面:和大众版本不是一个级别的。考虑到是在手机上运行,绘制标注的数量就需要严格控制。手机窗口中超过50个mark就开始影响正常的放大缩小操作了,还会卡顿。也可能我手机(M2)比较烂。
  3. BUG:我对V1.0版本的测试表示强烈质疑,我遇到的问题不是什么犄角旮旯里的错误。一个zoomend事件响应两次。还有Infowindows(弹出窗口)只能指定一个mark实例,说简单点多个mark无法和多个Infowindows对应。 尝试了很多方式没解决,只能自己新建对象存储信息还要比对出对应关系。弹出的Infowindows窗口在手机上也时常关不掉。不多说了就那几个接口谁用谁知道。

三、完成的内容
做了一个极速版的原型,处理了上面提到到的几个BUG,优化了mark的绘制,对用极速版开发的朋友会有些帮助。
  1. 使用百度提供的LBS云作为POI点的管理工具。使用《JavaScript API 极速版》SDK做客户端开发。
  2. 解决信息窗口弹出错误问题:在循环添加infowindows的过程中出现只有最后一个弹出窗口能够显示。
  3. 优化窗口标注加载刷屏问题:地图平移过程中,通过新请求数据和地图上已有的坐标点数据进行比对,判断是否绘制或者删除。在地图放大或者缩小过程中随地图一起清空重绘。
  4. 控制窗口内绘制标注的数量:绘制过程中通过堆栈的机制,控制标注的绘制顺序过程。可自定义堆栈大小。
  5. 解决窗口zoomend事件被二次触发问题。
  6. 通过自建对象存储需要弹出的info窗口信息,使用坐标比对方式查找对应信息。
  7. 重新定义bounds请求范围,解决标注和边框重合。
  8. 通过百度提供的IP定位接口来进行定位。(非常不准)


   想要代码的同学请自己通过调试窗口拷贝 topspeedmap.js文件。全在里面没有加密,请保留作者信息。如果找不到脚本文件就留个邮箱吧,我会在我想起来的时候发你一份最新更新版本

扫描手机码访问测试


在线访问地址:http://rivers.duapp.com/
注意:百度地图文档中提供的方法已经过时了。想预览请参考我下面的步骤。