植入百度地图(一)——简单显示地图

百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口,我们可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,轻松访问百度地图服务和数据。

本文地图展示主要包括 普通地图(2D,3D),卫星地图和实时交通图;可通过接口或手势控制来实现地图的点击、双击、长按、缩放、旋转、改变视角等操作。本套开发指南主要是针对Eclipse开发环境进行编写的。

首先,在百度地图Android SDK的下载页面下载最新版SDK,下载地址为:http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download
下载完成后,我们需要申请开发密钥http://http://lbsyun.baidu.com/apiconsole/key  

  • 应用名称:可以用汉字、英文,但是不能涉及敏感词,比如百度、地图。
  • 应用类型:Android SDK
  • 启用服务:可以全选,也可以选择常用的。
  • 发布版SHA1和开发版SHA1:可以直接写一样的,只要不是为了发布应用。如何获取开发版SHA1(在Eclipse中选择window->preferences->Android->Build)
  • 包名:必须和自己创建项目的包名保持一致
提交后你就会得到一个AppKey(AK),下面配置环境会用到的。

接下来配置开发环境,找到刚刚下载的SDK里的libs包,把包里面的内容全部拷贝到自己的libs目录下面,Build Path

保证百度类不能被混淆,否则会出现网络不可用等运行时异常

-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}    
-dontwarn com.baidu.**

显示百度地图

第一步,在AndroidManifest中添加开发密钥,所需权限等;

  1. 在Application中添加开发密钥
    <application>  
        <meta-data  
            android:name="com.baidu.lbsapi.API_KEY"  
            android:value="开发者 key" />  
    </application>
  2. 添加所需权限
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
第二步,在布局xml中添加地图控件

<com.baidu.mapapi.map.MapView  
    android:id="@+id/bmapView"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:clickable="true" />
第三步,在Activity中初始化SDK

public class MainActivity extends Activity {  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);   
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext  
        //注意该方法要再setContentView方法之前实现  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main);  
    }  
}
第四步,管理地图生命周期

public class MainActivity extends Activity {  
    MapView mMapView = null;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);   
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext  
        //注意该方法要再setContentView方法之前实现  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main);  
        //获取地图控件引用  
        mMapView = (MapView) findViewById(R.id.bmapView);  
    }  
    @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();  
        }  
    }


完成这些步骤后,运行就能显示地图。
那么百度地图SDK还未我们提供了三种类型的地图(普通地图,卫星地图和空白地图),实现这些功能非常简单,核心代码如下:

mMapView = (MapView) findViewById(R.id.bmapView);  
mBaiduMap = mMapView.getMap();  
 
//普通地图  
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);  
 
//卫星地图  
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);  
 
//空白地图, 基础地图瓦片将不会被渲染。在地图类型中设置为NONE,将不会使用流量下载基础地图瓦片图层。使用场景:与瓦片图层一起使用,节省流量,提升自定义瓦片图下载速度。
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);
还可以实现实时交通图
//开启交通图   
mBaiduMap.setTrafficEnabled(true);
以及城市热力图
//开启城市热力图   
mBaiduMap.setBaiduHeatMapEnabled(true);

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值