安卓学习日记——百度地图

官网下载:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download
先去注册成为百度开发者,获取秘钥。
将下载的包导入到工程中。
安卓学习日记——百度地图
在中加入如下代码配置开发密钥(AK):

<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="开发者 key" />  
</application>

安卓学习日记——百度地图
涂抹掉的就是开发者 key
在外部添加如下权限声明:

//获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
//网络权限,当禁用后,无法进行检索等相关业务
<uses-permission android:name="android.permission.INTERNET" />
//读取设备硬件信息,统计数据
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//读取系统信息,包含系统版本等信息,用作统计
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
//获取设备的网络状态,鉴权所需网络代理
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//这个权限用于进行网络定位
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//这个权限用于访问GPS定位
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
//获取统计数据
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
//使用步行AR导航,配置Camera权限
<uses-permission android:name="android.permission.CAMERA" />
//程序在手机屏幕关闭后后台进程仍然运行
<uses-permission android:name="android.permission.WAKE_LOCK" />

在布局文件中添加地图容器

<com.baidu.mapapi.map.MapView  
    android:id="@+id/bmapView"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:clickable="true" />

地图初始化

public class DemoApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext   
        SDKInitializer.initialize(this);
        //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
        //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
        SDKInitializer.setCoordType(CoordType.BD09LL);
    }
}

创建地图Activity,管理MapView生命周期

public class MainActivity extends Activity {  
    private MapView mMapView = null;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.activity_main);  
        //获取地图控件引用  
        mMapView = (MapView) findViewById(R.id.bmapView);  
    }  
    @Override  
    protected void onResume() {  
       super.onResume();  
       //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
       mMapView.onResume();  
    }  
    @Override  
    protected void onPause() {  
      super.onPause();  
      //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
      mMapView.onPause();  
    } 
    @Override  
    protected void onDestroy() {  
      super.onDestroy();  
      //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
      mMapView.onDestroy();  
    }  
}

运行效果如下
安卓学习日记——百度地图
不理解的话可以参考官网的详细创建步骤
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/showmap
定义Maker坐标点

 LatLng point = new LatLng(39.963175, 116.400244);
//构建Marker图标
        BitmapDescriptor bitmap = BitmapDescriptorFactory
                .fromResource(R.mipmap.zz2);
//构建MarkerOption,用于在地图上添加Marker
        OverlayOptions option = new MarkerOptions()
                .position(point)
                .icon(bitmap);
//在地图上添加Marker,并显示
        baiduMap.addOverlay(option);

安卓学习日记——百度地图
POI检索
创建POI检索实例

mPoiSearch = PoiSearch.newInstance();

创建POI检索监听器

OnGetPoiSearchResultListener listener = new OnGetPoiSearchResultListener() {
    @Override
    public void onGetPoiResult(PoiResult poiResult) {

    }
    @Override
    public void onGetPoiDetailResult(PoiDetailSearchResult poiDetailSearchResult) {

    }
    @Override
    public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {

    }
    //废弃
    @Override
    public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {

    }
};

设置检索监听器

mPoiSearch.setOnGetPoiSearchResultListener(listener);

设置PoiCitySearchOption,发起检索请求

/**
 *  PoiCiySearchOption 设置检索属性
 *  city 检索城市
 *  keyword 检索内容关键字
 *  pageNum 分页页码
 */
mPoiSearch.searchInCity(new PoiCitySearchOption()
        .city("北京") //必填
        .keyword("美食") //必填
        .pageNum(10));


释放检索实例

mPoiSearch.destroy();

在地图上标记

 public void onGetPoiResult(PoiResult poiResult) {
            //获取POI检索结果
               List<PoiInfo> poiInfos= poiResult.getAllPoi();
               for (PoiInfo p:poiInfos){
                   Log.i("food",p.address+"-"+p.city+"-"+p.phoneNum);
                   BitmapDescriptor bd=BitmapDescriptorFactory.fromResource(R.mipmap.zz2);
                   OverlayOptions option = new MarkerOptions()
                           .position(p.location)
                           .icon(bd);
                   baiduMap.addOverlay(option);
               }

安卓学习日记——百度地图
定位显示我的位置
参考链接:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/location
安卓学习日记——百度地图

上一篇:高德地图的使用一


下一篇:ArcGIS for Android 基础入门案例(代码部分)