您的位置:首页 > 移动开发 > Android开发

Android中级篇之百度地图SDK v3.5.0-基础地图[图解百度地图基础教程]

2015-08-31 10:49 766 查看

基础地图[比官方更详细]

简介

开发者可利用SDK提供的接口,使用百度为您提供的基础地图数据。目前百度地图SDK所提供的地图等级为3-19级,所包含的信息有建筑物、道路、河流、学校、公园等内容。所有叠加或覆盖到地图的内容,我们统称为地图覆盖物。如标注、矢量图形元素(包括:折线、多边形和圆等)、定位图标等。覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动。

百度地图SDK为广大开发者提供的基础地图和上面的各种覆盖物元素,具有一定的层级压盖关系,具体如下(从下至上的顺序):

1、基础底图(包括底图、底图道路、卫星图等);

2、地形图图层(GroundOverlay);

3、热力图图层(HeatMap);

4、实时路况图图层(BaiduMap.setTrafficEnabled(true););

5、百度城市热力图(BaiduMap.setBaiduHeatMapEnabled(true););

6、底图标注(指的是底图上面自带的那些POI元素);

7、几何图形图层(点、折线、弧线、圆、多边形);

8、标注图层(Marker),文字绘制图层(Text);

9、指南针图层(当地图发生旋转和视角变化时,默认出现在左上角的指南针);

10、定位图层(BaiduMap.setMyLocationEnabled(true););

11、弹出窗图层(InfoWindow);

12、自定义View(MapView.addView(View););

地图类型

百度地图Android SDK为您提供了两种类型的地图资源(普通矢量地图和卫星图),开发者可以利用BaiduMap中的mapType()方法来设置地图类型。

普通矢量地图

首先我们写一个BaseActivity继承ActivityFragmentActivity都行,这里为了后面我们写MapFragmentDemo还是继承FragmentActivity好了:

/**
 * Activity基类
 */
public class BaseActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        //注意该方法要再setContentView方法之前实现
        SDKInitializer.initialize(getApplicationContext());
    }
}




activity_main.xml
布局:

<LinearLayout 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"
    android:orientation="vertical">

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

</LinearLayout>




BaseMapDemo
类:

public class BaseMapDemo extends BaseActivity {
    private MapView mMapView;
    private BaiduMap mBaiduMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        mMapView = (MapView) findViewById(R.id.main_bdmap);
        mBaiduMap = mMapView.getMap();
        //普通地图
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
    }

    @Override
    protected void onResume() {
        super.onResume();
        // activity 恢复时同时恢复地图控件
        mMapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        // activity 暂停时同时暂停地图控件
        mMapView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // activity 销毁时同时销毁地图控件
        mMapView.onDestroy();
    }
}


运行效果图:



卫星图

更改
BaseMapDemo
类中的代码:

private void initView() {
        mMapView = (MapView) findViewById(R.id.main_bdmap);
        mBaiduMap = mMapView.getMap();
        //普通地图
        //mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
        //卫星图
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
    }


运行效果图:



实时交通图

当前,全国范围内已支持多个城市实时路况查询,且会陆续开通其他城市。

在地图上打开实时路况,更改
BaseMapDemo
类中的代码:

private void initView() {
        mMapView = (MapView) findViewById(R.id.main_bdmap);
        mBaiduMap = mMapView.getMap();
        //开启实时交通图
        mBaiduMap.setTrafficEnabled(true);
    }


运行效果图:



百度城市热力图

百度地图SDK继为广大开发者开放热力图本地绘制能力之后,再次进一步开放百度自有数据的城市热力图层,帮助开发者构建形式更加多样的移动端应用。

百度城市热力图的性质及使用与实时交通图类似,只需要简单的接口调用,即可在地图上展现样式丰富的百度城市热力图。

在地图上开启百度城市热力图的核心代码如下:

private void initView() {
        mMapView = (MapView) findViewById(R.id.main_bdmap);
        mBaiduMap = mMapView.getMap();
        //开启百度城市热力图
        mBaiduMap.setBaiduHeatMapEnabled(true);
    }


运行效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: