Android百度地图——SDK版本v2

</uses-permission>



<!-- 读取手机的当前状态权限,没有的话会报错,这个是使用百度地图API必须的 -->

<uses-permission android:name="android.permission.READ_PHONE_STATE" >

</uses-permission>



<!--Cache功能需要读写外部存储器 ,若没这个权限,地图加载不出来-->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >

</uses-permission>



  

           4、添加对多种屏幕的支持:



<supports-screens

    android:anyDensity="true"

    android:largeScreens="true"

    android:normalScreens="true"

    android:resizeable="true"

    android:smallScreens="true" />



  

          5、配置Activity:



<activity

        android:configChanges="orientation|keyboardHidden"

        android:label="@string/app_name"

        android:name=".BaiduMapBaseActivity"

        android:screenOrientation="sensor" >

        <intent-filter >

            <action android:name="android.intent.action.MAIN" />



            <category android:name="android.intent.category.LAUNCHER" />

        </intent-filter>

    </activity>



          6、在布局xml文件中添加地图控件:



<com.baidu.mapapi.map.MapView

    android:id="@+id/bmapsView"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:clickable="true" />



  

        7、 创建地图Activity,并import相关类:



               a. 创建地图引擎管理类对象,并初始化。



// 注意:请在调用setContentView前初始化BMapManager对象,否则会报错

    mBMapManager = new BMapManager(this.getApplicationContext());

    mBMapManager.init(BAIDU_MAP_KEY, new MKGeneralListener() {



        @Override

        public void onGetNetworkState(int iError) {

            if (iError == MKEvent.ERROR_NETWORK_CONNECT) {

                Toast.makeText(BaiduMapBaseActivity.this.getApplicationContext(), 

                        "您的网络出错啦!", Toast.LENGTH_LONG).show();

            }

        }



        @Override

        public void onGetPermissionState(int iError) {

            if (iError == MKEvent.ERROR_PERMISSION_DENIED) {

                // 授权Key错误:

                Toast.makeText(BaiduMapBaseActivity.this.getApplicationContext(),

                        "请在 DemoApplication.java文件输入正确的授权Key!", Toast.LENGTH_LONG).show();

            }

        }

    });



  

              b.通过ID获取代表地图显示组件的MapView对象,并设置启用内置的缩放控件。



    mMapView = (MapView) this.findViewById(R.id.bmapsView);

    // 设置启用内置的缩放控件

    mMapView.setBuiltInZoomControls(true);



                  c.获取地图控制器对象,并设置地图的中心点及缩放级别。



      // 获取地图控制器,可以用它控制平移和缩放

      MapController mMapController = mMapView.getController();

    

    // 用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)



    // 北京天安门的经纬度:39.915 * 1E6,116.404 * 1E6

    // GeoPoint mGeoPoint = new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6));

    

    // 上海市浦东新区的GPS纬度经度值:31.224078,121.540419

    GeoPoint mGeoPoint = new GeoPoint(

            (int) (31.224078 * 1E6), 

            (int) (121.540419 * 1E6));

    

    // 设置地图的中心点

    mMapController.setCenter(mGeoPoint);

    // 设置地图的缩放级别。 这个值的取值范围是[3,18]。 

    mMapController.setZoom(13);



              d.重写Activity的生命周期回调方法onResume()、onPause()和onDestroy(),管理地图引擎管理类对象和显示对象生命周期。



@Override

protected void onResume() {

    mMapView.onResume();

    if (mBMapManager != null) {

        mBMapManager.start();

    }

    super.onResume();

}



@Override

protected void onPause() {

    mMapView.onPause();

    if (mBMapManager != null) {

        mBMapManager.stop();

    }

    super.onPause();

}



@Override

protected void onDestroy() {

    mMapView.destroy();

    if (mBMapManager != null) {

        mBMapManager.destroy();

        mBMapManager = null;

    }

    super.onDestroy();

}



经过以上这些步骤,加载的是上海市浦东新区地图(基础图),运行工程效果图如下:



注:基本的地图图层,包括若干个缩放级别,显示基本的地图信息,包括道路、街道、学校、公园等内容。



![](https://img-my.csdn.net/uploads/201302/10/1360479719_4643.png)



            e.在地图中显示实时交通信息示图(当前,全国范围内已支持多个城市实时路况查询,且会陆续开通其他城市。)



  // 在地图中显示实时交通信息示

   mMapView.setTraffic(true);



         运行效果图如下:



![](https://img-my.csdn.net/uploads/201302/10/1360480078_8477.png) 



           f.显示卫星图(卫星地图是卫星拍摄的真实的地理面貌,所以卫星地图可用来检测地面的信息,你可以了解到地理位置,地形等。)



// 显示卫星图

mMapView.setSatellite(true);




运行效果图如下:



![](https://img-my.csdn.net/uploads/201302/10/1360480112_7846.png)  

完整代码如下:



package com.android.baidu.map;

import android.app.Activity;

import android.os.Bundle;

import android.widget.Toast;

import com.baidu.mapapi.BMapManager;

import com.baidu.mapapi.MKGeneralListener;

import com.baidu.mapapi.map.MKEvent;

import com.baidu.mapapi.map.MapController;

import com.baidu.mapapi.map.MapView;

import com.baidu.platform.comapi.basestruct.GeoPoint;

/**

  • 基本的地图图层,包括若干个缩放级别,显示基本的地图信息,包括道路、街道、学校、公园等内容。

  • @author android_ls

*/

public class BaiduMapBaseActivity extends Activity {

/**地图引擎管理类*/

private BMapManager mBMapManager = null;



/**显示地图的View*/

private MapView mMapView = null;



/**

 * 经研究发现在申请KEY时:应用名称一定要写成my_app_应用名(也就是说"my_app_"是必须要有的)。

 * 百度地图SDK提供的服务是免费的,接口无使用次数限制。您需先申请密钥(key),才可使用该套SDK。

 * */

public static final String BAIDU_MAP_KEY = "07418AEC69BAAB7104C6230A6120C580DFFAEEBB";



@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);



    // 注意:请在调用setContentView前初始化BMapManager对象,否则会报错

    mBMapManager = new BMapManager(this.getApplicationContext());

    mBMapManager.init(BAIDU_MAP_KEY, new MKGeneralListener() {



        @Override

        public void onGetNetworkState(int iError) {

            if (iError == MKEvent.ERROR_NETWORK_CONNECT) {

                Toast.makeText(BaiduMapBaseActivity.this.getApplicationContext(),

                        "您的网络出错啦!", 

                        Toast.LENGTH_LONG).show();

            }

        }



        @Override

        public void onGetPermissionState(int iError) {

            if (iError == MKEvent.ERROR_PERMISSION_DENIED) {

                // 授权Key错误:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
csdnimg.cn/13f2cb2e05a14868a3f0fd6ac81d625c.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-Teze715v-1712833936326)]

[外链图片转存中…(img-lWtBJnfH-1712833936326)]

[外链图片转存中…(img-SMdiQfy7-1712833936327)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-Gl99vFAV-1712833936327)]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值