博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发百度地图(一)之初体验
阅读量:7261 次
发布时间:2019-06-29

本文共 4831 字,大约阅读时间需要 16 分钟。

本文系作者原创,如需转载请注明出处!

一、概述

我来现在这家公司前是面试的java,公司招聘的也是java。结果上班之后,给我一个U盘,里面是Android的Eclipse开发环境,让我做Android?天啦噜,我压根不会,然后就自学咯!边百度边、看文档操作,开始上手了,然后才知道谷歌对Eclipse已经停止更新,推出了AndroidStudio,然后公司用的还是Eclipse中的Android4.2版本。上述就是我为啥用Eclipse开发APP,就别说我啥不追随技术更新...反正这个月底我也走人了,当然最主要的是公司电脑根本带不动AndroidStudio,进入正题

我选择百度地图是有原因的,它确实在使用上来说(当然除了那可怕的“推广”、“全家桶”),还是很不错的!所以导致我很喜欢谷歌地图

注意:由于谷歌对Eclipse的ADT停止更新以及百度地图API的原因,百度地图SDK3.7(不包含)以上版本不支持低版本的ADT(编译通过,但app闪退,提示无法初始化SDK,未找到该类),至于版本几,没测试。目前知道的是ADT23.7是支持。我现在的环境是ADT23.7、Android6.0

一、正文

1、先去百度地图API官网注册帐号并且申请API KEY——

进入API控制台中心创建应用

Paste_Image.png

按照要求填写

Paste_Image.png

发布版SHA1:是创建的android.keystore中的查询出来的,打了码的那玩意儿就是发布版SHA1,使用CMD进入该文件目录,键入

keytool -list -keystore debug.keystore

Paste_Image.png

开发版SHA1:在Eclipse>Window>Preferences>Android>Build,打了马赛克那玩意儿

Paste_Image.png

包名:在AndroidManifest.xml文件中查看

Paste_Image.png

创建成功后最后会得到这一串key

Paste_Image.png

2、下载SDK包

进入中可以自定义下载开发包、示例代码和文档。

3、基本配置

1> 导入库
将libs jar包导入到项目中,还有so文件,把so文件放到armeabi文件夹,jar包放到libs文件夹,如下图所示:

Paste_Image.png

2> 配置key及权限

打开AndroidManifest.xml文件,添加以下权限:

然后在application里面添加key和定位服务

然后就完成了基本配置,之后就可以开始撸代码了

4、开始撸代码

第一步,在主界面main.xml添加地图视图

第二步,创建MApplication.java进行初始化地图相关,在AndroidManifest.xml文件application中添加:

android:name="该类所在路径"

看以下官方截图中框框部分注释

Paste_Image.png

官方这样说道“在使用SDK各组件之前初始化context信息,传入ApplicationContext。注意该方法要在再(有个错别字)setContentView方法之前实现”,我们知道,实现Application后,当应用程序启动时,它首先执行的是Application实现类的onCreate(Bundle saveInstanceState)方法,是在Activity实现类之前,所以适合进行初始化地图相关。

当然,你要是在Activity中也是可以的

/**  * 描述:APP应用程序  
* 作者: kimball
* E-mail: kimballlu@foxmail.com
* 日期: 2017年3月7日 下午6:05:54
*/public class MApplication extends Application { /** * 上下文对象 */ public static Context context; @Override public void onCreate() { super.onCreate(); //在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(this.getApplicationContext()); } }

第三步,创建BaseActivity.java,继承AppCompatActivity(该类我是放一些Activity通用的东东的,后面会用到)

/**  * 描述:Activity  
* 作者: kimball
* E-mail: kimballlu@foxmail.com
* 日期: 2017年3月10日 上午9:47:04
*/public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } }

第四步,ManActivity.java,继承BaseActivity.java

public class MainActivity extends BaseActivity {        // 地图相关    private MapView mapView;    // 地图控件    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.setContentView(R.layout.main);        // 初始化        this.init();    }        /**     * 初始化     */    private void init(){        // 初始化控件        this.initControls();        // 初始化地图        this.initMap();    }        /**     * 初始化控件     */    private void initControls(){        // 获取地图视图        this.mapView = (MapView) findViewById(R.id.bmapView);    }        /**     * 初始化地图     */    private void initMap(){        // 不显示百度地图Logo        mapView.removeViewAt(1);        // 不显示地图上比例尺            mapView.showScaleControl(false);            // 不显示地图缩放控件(按钮控制栏)            mapView.showZoomControls(false);        // 获取百度地图对象        baiduMap = mapView.getMap();        baiduMap.setMyLocationEnabled(true);        // 设置为一般地图        baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);                     // 设置初始大图大小500米                MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);         baiduMap.setMapStatus(msu);    }       /**     * 当Activity处于可见状态时运行     */    @Override    protected void onStart() {        super.onStart();    }        /**     * Activity销毁时运行     */    @Override    protected void onDestroy() {        super.onDestroy();        // 管理地图的生命周期:销毁        if(mapView != null){            mapView.onDestroy();        }    }    /**     * Activity可以得到用户焦点时运行     */    @Override    protected void onResume() {        super.onResume();        // 显示        if(mapView != null){            mapView.onResume();        }    }    /**     * Activity被遮挡住时运行     */    @Override    protected void onPause() {        super.onPause();        // 暂停        if(mapView != null){            mapView.onPause();        }    }        /**     * Activity处于不可见状态时运行     */    @Override    protected void onStop() {        super.onStop();    }    }

5、执行效果

效果图引用官方例子图片,因为现在这个app进度已经快了好多,效果图已经不适用,大同小异,将就看看吧!

Paste_Image.png

6、注意事项

a,要是出现白色小方格,地图不显示,请检查key配置是否正确
b,要是出现一开启应用程序就闪退并报未能找到SDKInitializer类相似的问题,请检查libs导入是否正确。如还是不能解决,请参考文章开头所说的描述

三、结语

到这里初体验就已经结束了,是不是很简单?没事儿,后面我们再慢慢深入。

说实话,这篇文章我花了一个多星期才写好,说第二天就写好,结果我看了一天的历史,后面又看了几天。说第二天就写好,结果我写app又花了好多天。说第二天写好,结果浪着浪着时间又过去。我不是在找借口啊!没有,绝对没有的事儿!
这篇其实是我在写一个app(等写好后开源的一个小项目,受不了一些地图无所谓的功能,我们是有“态度”的青年,对不对?)开始写的,然后然后,就各种原因啊!天时地利人和都不沾边啥的,但这没有关系,我会尽快让文章跟上app进度的,嗯,相信我

PS

您还可以关注我的
微信公众号:kimball
个人小站:www.kimball.site
新浪微博:kimball-lu
知乎:kimball

你可能感兴趣的文章
pdf转txt
查看>>
牛客假日团队赛1 D.Promotion Counting
查看>>
点击头像单独把图片拉取出来.然后再次点击回到初始效果
查看>>
7-2 朋友圈 (25 分)
查看>>
转:手机流畅的决定性因素
查看>>
nginx离线部署脚本
查看>>
移动端多行文本溢出省略
查看>>
ls命令详解
查看>>
sql阻塞进程查询
查看>>
Python学友
查看>>
学了N年英语,你学会翻译了吗?——最基本的数据库连接
查看>>
如何發佈一個完整Node.js Module
查看>>
折纸带
查看>>
AC日记——中山市选[2009]小明的游戏 bzoj 2464
查看>>
sqlserver2005实现oracle中的rownum功能
查看>>
真实世界的Windows Azure:使用Windows Azure社交游戏开发商享有更低的成本和改进的扩展性...
查看>>
云时代的海外扩张
查看>>
hdu1078 记忆化搜索
查看>>
Ninject使用demo
查看>>
2017 清北济南考前刷题Day 3 afternoon
查看>>