百度地图之Hello World

初学者学习百度地图一定会很困惑,无从下手。今天,手把手教你写一个最简单的 基于百度地图的小Demo

先看效果图:




首先,新建一个项目,建议写Demo的时候就养成良好的包名规范,不要因为Demo就随意写。

接着打开百度SDK下载页:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download


将下载好的包解压后你会得到:

libs文件夹:里面包含了开发用的SDK

doc文件夹:包含了开发文档

Sample:百度官方提供的Demo

切换到AS,定位到app-src-main,新建一个jniLibs文件夹,将libs文件夹里的东西都拷贝过来,

我们将libs文件夹里的jar包导入到项目里  如图:

如图,在没有导入之前,baidumapapi...的左边都是没有三角的,我们右键,add as library,或者Ctrl+Alt+Shift+S,在左边Modules下选择app,接着在右边选择Dependencies,点+号,File,挨个添加到项目里。

接下来,申请百度的key

如果你第一次接触,此时,你应该生成debug.keystore文件,用该文件去获取SHA1的值,http://blog.csdn.net/u012552275/article/details/52457590,耐心看下去,申请成功后是这样的

接下来,就开始进入写代码环节:

我们打开http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v4_0_0/index.html读文档,发现mapView是可以呈现出地图的View,我们的地图操作都要基于这个View。


看关系发现它也是继承自ViewGroup,先不管那么多,复制com.baidu.mapapi.map.MapView到我们的项目的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.mymap.mymapdemo.MainActivity">

    <com.baidu.mapapi.map.MapView
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />
</RelativeLayout>
ok到此位置,布局就搞定了。太傻瓜式了根本没有技术含量有木有!

接着在我们的类里:

public class MainActivity extends AppCompatActivity {

    private MapView mMapView; // 展示的地图控件

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //用于初始化百度地图
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.onDestroy();
    }
    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mMapView.onPause();
    }
}
其各个生命周期里,要加上mMapView各种方法,这里百度已经封装好了我们只需要调用一下就可以了


ok,完成了大部分,此时如果在机器上跑,一定会抱错,原因是1.我们没有加入权限:

<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 用于读取手机当前的状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 访问网络,网络定位需要上网 -->
<uses-permission android:name="android.permission.INTERNET" />

2.我们没有使用到百度的key

打开Minifest文件,在Application节点里加入

<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="这里将百度申请的key粘贴过来" />
至此,大功告成,毫无悬念。当然你也可以参考百度官方的教程http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap

接下来,认识几个新方法:

private void initView() {

    mMapView = (MapView) findViewById(R.id.mapview);
    mBaiduMap = mMapView.getMap();
    /**
     * 设置地图的类型
     */
    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//普通地图
    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);//卫星地图
    mBaiduMap.setTrafficEnabled(true);//开启交通图
    mBaiduMap.setBaiduHeatMapEnabled(true);//开启百度城市热力图
}
如此,地图上的东西就逐渐多了起来,在开发中,必须根据需求展示地图层,否则软件会在性能上落后很多。


后续,我会加入更多百度地图的文章,以便我们更多的交流经验。











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值