最近的项目想做一个在可以通过手持设备获取经纬度,然后在地图上进行标注显示的功能,因为还在技术调研阶段,所以决定先使用百度地图或Google Maps的API来做Demo。通过网上的一些资料和自己对于Google和百度地图的使用,对这两个地图做了一些简单的对比,结论是很明显的——Google在技术水平和成熟度上都要比百度高很多,可以说完全不在一个档次上,但是鉴于Google和中国政府的微妙关系加上中国特色的互联网管理方式,实在是没有信心使用随时可能被墙的产品,所以最终还是无奈地选择了百度地图。
有那么几点罗列一下:
- Google地图能够放大到比百度地图更加细致的比例尺,而且在地图标注上也比百度的详细很多。
- 百度地图在道路的绘制上可能比Google Maps更加详细些,具体来说是某些小的道路,Google Maps并不显示,而会在百度地图上看到。
- 两者的免费版都不允许商业应用,并且Google Maps API按IP进行限制,貌似是15K每天,如果超过这个限额就会返回错误,不过可以发邮件给Google说这个问题,添加白名单之类。百度暂时没有发现存在这个限制。
- 企业版费用,Google Maps API如果是商业应用的话,貌似是最少10000美元每年的费用,百度问了一下是15万人民币的年费。
- GPS经纬度坐标偏移问题。这个是由于中国要求对经纬度进行加密导致的,所以百度和Google的地图上都存在这个问题,即使用手持设备或者导航设备获取到的经纬度在地图上定位发现并不是对应的位置,而存在很大的偏移。Google地图的位置纠正网上有很多资料,我这里就不说了,可以自己去查,后面会讲下百度地图偏移问题的解决方法。
- API性能对比。这个网上有一些对比,我自己做的实验也不具有代表性,因此此处不说了,结论是Google的相对较好些,有个链接可以稍微参考下:http://www.cnblogs.com/milkmap/archive/2011/02/09/1950142.html
百度地图API的使用主要是JavaScript的方式,参考资料只能是百度地图官网的API说明和示例,基本也够用了,我此处做的例子就是直接拷贝的它的代码进行了简单的综合,非常的简单,一个从url传入经纬度值,进行以此坐标为中心显示一定比例尺的地图,加入地图漫游、缩放、鱼骨和比例尺控件功能,添加右键事件响应菜单,获取所点击点的坐标传递给一个url的过程。仅仅粘贴代码如下,包括一些url参数提取的函数和api的注释都是网上的,不能算是完全的原创。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
< meta name mapY = new String(Base64.decode(mapY)); |
|
System.out.println(mapX); |
System.out.println(mapY); |
public static void main(String[] args) throws IOException { |
testPost( "116.31500244140287" , "40.006434917448786" ); |
结果我使用了Apache的Base64包进行转码,如果你想代码跑起来需要去下载这个包,或者你可以输出转码前的字符串~哦,对了,Base64编码的坐标信息可以直接传递给百度地图的API进行使用。
总体来说,百度地图API做得还算简单,使用还算方便,但是和Google Maps比起来还是有一定的差距的,希望本文可以对使用的人有所帮助~祝好运。