百度地图V3.0基本操作

该文章中百度地图基本操作如下:

 * 普通地图和卫星地图切换

 * 设置/删除覆盖物(即地图上的标注),并设置可拖动及监听

 * 开启/关闭交通图   

 * POI检索

1.配置

首先需要在百度API端,建立自己的应用:

 


其中安全码为:数字签名+包名的组合,之后就可以建立应用

 


其中红色部分就是地图的key,该值需要配置到app应用的清单文件中。如下:

 <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <meta-data

            android:name="com.baidu.lbsapi.API_KEY"

            android:value="上面的key" />

</application>

 

之后添加必要的使用权限:

 <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <uses-permission android:name="android.permission.USE_CREDENTIALS" />

    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />

    <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.CHANGE_WIFI_STATE" />

    <uses-permission android:name="android.permission.ACCESS_WIFI_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.BROADCAST_STICKY" />

    <uses-permission android:name="android.permission.WRITE_SETTINGS" />

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

 

接着就可以在Activity中使用百度应用了。

 

2.使用

我们可以在布局文件中通过如下代码定义一个百度地图:

  <com.baidu.mapapi.map.MapView

        android:id="@+id/bmapView"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:clickable="true" >

    </com.baidu.mapapi.map.MapView>

其他可以根据情况自定义布局。

 

注:在setContentView()方法调用前,需要通过

SDKInitializer.initialize(getApplicationContext());

来加载刚刚配置的key,之后才可以使用。

之后在ActivitysetContentView()后获取该MapView对象。

同样,我们也可以通过MapView.getMap()方法获取BaiduMap类对象,我们可以在该对象中对百度地图进行配置操作。

也可以直接运行就可以显示地图了

 

 

3.设置地图参数

在上个百度的版本中,配置地图参数是通过mapview.getcontroller()的方式获取MapController对象并操作完成的。

而现在,没有该方法。需要通过MapView.getMap()方法获取BaiduMap对象,获取地图控制器。

例子:

     //开启交通图   

      mBaiduMap.setTrafficEnabled(true);

      //设置显示风格,两个可选值:BaiduMap.MAP_TYPE_NORMAL 普通 ,BaiduMap.MAP_TYPE_SATELLITE 卫星

      mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);

 

设置地图中心点:

               // 修改显示位置,使得能够显示查询结果。

// 设定中心点坐标

LatLng cenpt = new LatLng(lng.latitude, lng.longitude);

// 定义地图状态

MapStatus mMapStatus = new MapStatus.Builder().target(cenpt)

.zoom(12).build();

// 定义MapStatusUpdate对象,以便描述地图状态将要发生的变化

MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory

.newMapStatus(mMapStatus);

// 改变地图状态

mBaiduMap.setMapStatus(mMapStatusUpdate);

 

 

 

具体操作,参见百度API

 

4.遮盖物(OverLay

所谓的遮盖物就是在地图上画一些如标记,文字,路线等信息。大多数的Overlay都是继承自OverlayOptions,所以直接创建该类的子类即可。

 


下面给出例子:

      //定义Maker坐标点  

      LatLng point = new LatLng(39.963175, 116.400244);  

      //构建Marker图标  

      BitmapDescriptor bitmap = BitmapDescriptorFactory  

          .fromResource(R.drawable.icon_marka);  

      //构建MarkerOption,用于在地图上添加Marker  

      OverlayOptions option = new MarkerOptions()  

          .position(point)  //设置marker的位置

          .icon(bitmap)  //设置marker图标

          .zIndex(9)  //设置marker所在层级

          .draggable(true);  //设置手势拖拽

       //在地图上添加Marker,并显示  

      mBaiduMap.addOverlay(option);

     

以上代码是在地图的(39.963175, 116.400244)位置显示一个标记,该标记的配置可以通过option.XXX的方式进行配置。在配置完成后,需要通过

  mBaiduMap.addOverlay(option);

方法,把其添加到地图中。

需要注意的是: mBaiduMap.addOverlay(option);方法返回的是Overlay对象,我们可以通过remove(),setInvisible(),getExtraInfo()等方法,控制该遮盖物。

如删除该遮盖物,可以通过:

Overlay.remove()的方式进行。

 

 

5. 搜索功能

百度地图提供了多种搜索功能,如POI检索、公交信息查询、线路规划、地理编码、在线建议查询、短串分享。

以下是搜索所在的包:

 


我以POI搜索为例,POI的全称是Point of Interest,即兴趣点搜索。

我们可以通过搜索,如福建超市的方式,获取到符合搜索条件的地点。也可以指定在某个范围内,如半径1公里内。

例子如下:

      // 第一步,创建POI检索实例

mPoiSearch = PoiSearch.newInstance();

       

 

// 第二步,创建POI检索监听者;

OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener() {

public void onGetPoiResult(PoiResult result) {

// 在此,处理监听结果,如添加覆盖物,获取地点信息等。


// 如:获取POI检索结果

List<PoiInfo> allPoi = result.getAllPoi();

PoiInfo poiInfo = allPoi.get(0);

LatLng lng = poiInfo.location;

// 修改显示位置,使得能够显示查询结果。

// 设定中心点坐标

LatLng cenpt = new LatLng(lng.latitude, lng.longitude);

// 定义地图状态

MapStatus mMapStatus = new MapStatus.Builder().target(cenpt)

.zoom(12).build();

// 定义MapStatusUpdate对象,以便描述地图状态将要发生的变化

MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory

.newMapStatus(mMapStatus);

// 改变地图状态

mBaiduMap.setMapStatus(mMapStatusUpdate);

 

}

 

public void onGetPoiDetailResult(PoiDetailResult result) {

// 获取Place详情页检索结果

 

}

};

 

// 第三步,设置POI检索监听者;

mPoiSearch.setOnGetPoiSearchResultListener(poiListener);

 

 

// 第四步,发起检索请求;

/**

 * 

 * @param place 查询地点

 * @param radius 查询半径

 * @param pageCapacity 每页条数

 * @param pageNum 页数

 */

public void searchNearBy(String place,int radius,int pageCapacity,int pageNum){

LatLng lnt = new LatLng(39.963175, 116.400244);

// radius - 检索半径 单位: m

PoiNearbySearchOption option = new PoiNearbySearchOption()

.keyword(place).location(lnt).pageCapacity(pageCapacity).pageNum(pageNum)

.radius(radius);

mPoiSearch.searchNearby(option);

}

调用上述方法,如:

searchNearBy(“超市”,1000,10,1);

即获取(39.963175, 116.400244)周围半径1000m内的10家超市,这10家排名在第二页。(第一页则最后传入参数为0)。

同理,我们也可以把LatLng作为参数传递,这样就可以指定在不定位置内的兴趣点位置。

 

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值