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

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

  • 简介

    开发者可利用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());
        }
    }

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

    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>
    

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

    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();
        }
    }

    运行效果图:

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

  • 卫星图

    更改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);
        }

    运行效果图:

你可能感兴趣的:(android,sdk,开发人员,地图,百度地图)