最近做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只能显示网格而没有地图.
参考资料:
首先,注册成为一名百度开发者.
提交注册成功后如下图所示.
点击"去创建应用>>",如下图所示,这里显示你的应用列表.
此时点击“创建应用”即可申请apikey,选择类型以前我们见过的博客书籍通常是选择"for mobile"应用类型,这里已经没有该选项了,故我选择"for android",同时输入安全码!
这里你可能疑惑"安全码"是什么?它是由"数字签名;包名"组成,其中数字签名是我们打包程序时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
点击"提交"后即可获取的ak:qwanhfq0ty2qmdyh3nrr0gqx
下载android sdk地址:
在创建好的应用程序baidumapshow项目中libs目录下复制baidumapapi_v2_4_1.jar文件,同时libs目录下新建armeabi目录,并拷贝libbaidumapsdk_v2_4_1.so文件.如下图所示:
其中该工程包名为com.eample.baidumapshow,libs目录用于存放第三方jar包,armeabi目录存放ndk生成so文件调用其c/c++函数库.同时需要导入jar包,右键工程->"properties(属性)"->"java构建路径",如下图所示添加jar.
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.运行效果如下图所示
最后希望文章对大家有所帮助,这是我帮同学做百度地图简单研究的一篇基础性文章,其中后面准备讲讲百度地图poi兴趣搜索和添加标注等功能吧!对于前面的问题我也不知道为什么总是显示网格而没有地图,但是通过v2_4_1能显示地图.
我猜测其原因是以前申请的apikey调用方法可以实现显示地图,但是由于百度新更新的sdk方法不兼容,现在申请的apikey需要使用新的方法,故上面的才能显示,个人意见,不知道是否正确啊!
参考资料:
1.郭霖大神《android第一行代码》第11章基于百度地图的开发