天天看点

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

最近做android百度地图,但是使用baidumapapi_v2_3_1.jar和libbaidumapsdk_v2_3_1.so显示百度地图时总是遇到问题——只显示网格而没有显示地图,网络连接和apikey申请都是正确的,就是不知道为什么不能显示,网上也有很多人遇到这个问题,有的是sdk更新不兼容.而且网上很多百度地图都是使用v2.3.1版本,后来没有办法只有通过baidumapapi_v2_4_1.jar完成显示地图.

    其中需要注意的是使用2.3.1时调用manager.init("apikey",null)初始化地图,而2.4.1版本是通过在androidmanifest.xml的meta-data中输入ak.

   ps:这仅仅是一篇android开发百度地图的基础文章,网上资料也很多,但该方法可行.参考郭神《android第一行代码》中方法也是v2.3.1只能显示网格而没有地图.

参考资料:

    首先,注册成为一名百度开发者.

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

   提交注册成功后如下图所示.

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

   点击"去创建应用>>",如下图所示,这里显示你的应用列表.

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

   此时点击“创建应用”即可申请apikey,选择类型以前我们见过的博客书籍通常是选择"for mobile"应用类型,这里已经没有该选项了,故我选择"for android",同时输入安全码!

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

    这里你可能疑惑"安全码"是什么?它是由"数字签名;包名"组成,其中数字签名是我们打包程序时keystore的sha1指纹,通过点击eclipse的"窗体(window)->首选项(preferences)->android->build"查看,同时也可参照上面官方文档链接通过cmd获取.而包名就是应用程序对应的包名.如下:

    e5:ba:71:31:9d:a3:bf:92:8d:2e:8f:3a:6d:0a:93:5b:3d:36:59:08;com.example.baidumapshow

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

   点击"提交"后即可获取的ak:qwanhfq0ty2qmdyh3nrr0gqx

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

下载android sdk地址:

    在创建好的应用程序baidumapshow项目中libs目录下复制baidumapapi_v2_4_1.jar文件,同时libs目录下新建armeabi目录,并拷贝libbaidumapsdk_v2_4_1.so文件.如下图所示:

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

    其中该工程包名为com.eample.baidumapshow,libs目录用于存放第三方jar包,armeabi目录存放ndk生成so文件调用其c/c++函数库.同时需要导入jar包,右键工程->"properties(属性)"->"java构建路径",如下图所示添加jar.

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

1.activity_main.xml布局文件

    布局文件中通过加载百度地图控件mapview,它是由百度提供的自定义控件故需要加上完整包名,同时该控件需要接受点击事件clickable设置为true.

2.mainactivity.java文件

   3.androidmanifest.xml中申明权限和apikey

   其中最重要的是添加apikey,方法mbmapmanager.init(null)调用.

   <meta-data 

       android:name="com.baidu.lbsapi.api_key"  

       android:value="qwanhfq0ty2qmdyh3nrr0gqx">

   </meta-data> 

4.运行效果如下图所示

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题
[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

    最后希望文章对大家有所帮助,这是我帮同学做百度地图简单研究的一篇基础性文章,其中后面准备讲讲百度地图poi兴趣搜索和添加标注等功能吧!对于前面的问题我也不知道为什么总是显示网格而没有地图,但是通过v2_4_1能显示地图.

    我猜测其原因是以前申请的apikey调用方法可以实现显示地图,但是由于百度新更新的sdk方法不兼容,现在申请的apikey需要使用新的方法,故上面的才能显示,个人意见,不知道是否正确啊!

参考资料:

    1.郭霖大神《android第一行代码》第11章基于百度地图的开发