当前位置: 代码迷 >> Android >> AndroidStudio下加入百度map的使用 (三)——API基本方法及常量属性
  详细解决方案

AndroidStudio下加入百度map的使用 (三)——API基本方法及常量属性

热度:45   发布时间:2016-04-27 22:31:32.0
AndroidStudio下加入百度地图的使用 (三)——API基本方法及常量属性

  上一章中我们已经完成定位功能,这一章向大家介绍一下常用的方法及常量属性的意思。

(1) 手势方法

缩放: setZoomGesturesEnabled()

俯视: setOverlookingGesturesEnabled()

旋转:setRotateGesturesEnabled()

平移: setScrollGesturesEnabled()

(2) 地图模式方法

setMapType(常量)

常量1:普通地图BaiduMap. MAP_TYPE_NORMAL

常量2:卫星地图: BaiduMap.MAP_TYPE_SATELLITE

开启交通模式:mBaiduMap.setTrafficEnabled(true)

(3) 定位设置中用到的方法及常量

定位精度: new LocationClientOption().setLocationMode(常量)

常量1:高精度模式(GPS+Wifi+基站) LocationMode.Hight_Accuracy 

常量2:低功耗模式(Wifi+基站)      LocationMode. Battery_Saving

常量3:仅设备模式(GPS)             LocationMode. Device_Sensors

定位结果:

国家测绘局标准

  1. new LocationClientOption().setCoorType ("gcj02")

百度经纬度标准

  1. new LocationClientOption().setCoorType ("bd09ll")

百度墨卡托标准

  1. new LocationClientOption().setCoorType ("bd09")

效果:

下面我们来具体使用一下

第一步:在xml文件中加入服务的定义

这是SDK中自带的服务,只需如此定义即可

<service            android:name="com.baidu.location.f"            android:enabled="true"            android:process=":remote" >            <intent-filter>                <action android:name="com.baidu.location.service_v2.2" >                </action>            </intent-filter></service>

第二步: 在上一章的布局中添加控件

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <CheckBox        android:id="@+id/zoom"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:checked="true"        android:onClick="setZoomEnable"        android:text="缩放" />    <CheckBox        android:id="@+id/scroll"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:checked="true"        android:onClick="setScrollEnable"        android:text="平移"        android:layout_below="@+id/rotate"        android:layout_toRightOf="@+id/compass"        android:layout_toEndOf="@+id/compass" />    <CheckBox        android:id="@+id/compass"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_weight="1"        android:checked="true"        android:onClick="setCompassEnable"        android:text="指南针"        android:layout_below="@+id/zoom"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true" />    <CheckBox        android:id="@+id/rotate"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_weight="1"        android:checked="true"        android:onClick="setRotateEnable"        android:text="旋转"        android:layout_alignParentTop="true"        android:layout_toRightOf="@+id/zoom"        android:layout_toEndOf="@+id/zoom" />    <CheckBox        android:id="@+id/overlook"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_weight="1"        android:checked="true"        android:onClick="setOverlookEnable"        android:text="俯视"        android:layout_above="@+id/compass"        android:layout_toRightOf="@+id/rotate"        android:layout_toEndOf="@+id/rotate" />    <com.baidu.mapapi.map.MapView        android:id="@+id/MyMpView"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:clickable="true"        android:layout_below="@+id/scroll"        android:layout_centerHorizontal="true"        android:layout_alignParentBottom="true" /><RadioGroup    android:id="@+id/radioButtonGroup"    android:layout_width="wrap_content"    android:orientation="horizontal"    android:layout_height="wrap_content"    android:layout_below="@+id/overlook"    android:layout_toRightOf="@+id/scroll"    android:layout_toEndOf="@+id/scroll">    <RadioButton        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="普通"        android:id="@+id/mapNormal"   />    <RadioButton        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="卫星"        android:id="@+id/mapSate"       /></RadioGroup>    <CheckBox        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="交通"        android:id="@+id/mapTraffic"        android:onClick="setTrafficMap"        android:layout_alignTop="@+id/radioButtonGroup"        android:layout_toRightOf="@+id/radioButtonGroup"        android:layout_toEndOf="@+id/radioButtonGroup" /></RelativeLayout>

第三步: 在监听事件方法中设置地图的使用,Activity完整代码

package com.jerehedu.administrator.baidumapapplication;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.CheckBox;import android.widget.RadioGroup;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatus;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationConfigeration;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.map.UiSettings;import com.baidu.mapapi.model.LatLng;public class UISettingDemo extends Activity {    /**     * MapView 是地图主控件     */    private MapView mMapView;    private BaiduMap mBaiduMap;    private UiSettings mUiSettings;    private RadioGroup radioGroup;    private CheckBox   trafficMap;    private boolean firstLocation;    private LocationClient locationClient;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_uisetting);        mMapView = (MapView) findViewById(R.id.MyMpView);        radioGroup =(RadioGroup)findViewById(R.id.radioButtonGroup);        trafficMap =(CheckBox)findViewById(R.id.mapTraffic);        mBaiduMap = mMapView.getMap();        mUiSettings = mBaiduMap.getUiSettings();        //overlook 设置地图俯仰角        MapStatus ms = new MapStatus.Builder().overlook(-30).build();        MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(ms);        mBaiduMap.animateMapStatus(u, 1000);        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup group, int checkedId) {                switch (checkedId){                    case R.id.mapNormal:                        //普通地图                        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);                        break;                    case R.id.mapSate:                        //卫星地图                        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);                        break;                }            }        });        locationSet();    }    /**     * 是否启用缩放手势     *      * @param v     */    public void setZoomEnable(View v) {        mUiSettings.setZoomGesturesEnabled(((CheckBox) v).isChecked());    }    /**     * 是否启用平移手势     *      * @param v     */    public void setScrollEnable(View v) {        mUiSettings.setScrollGesturesEnabled(((CheckBox) v).isChecked());    }    /**     * 是否启用旋转手势     *      * @param v     */    public void setRotateEnable(View v) {        mUiSettings.setRotateGesturesEnabled(((CheckBox) v).isChecked());    }    /**     * 是否启用俯视手势     *      * @param v     */    public void setOverlookEnable(View v) {        mUiSettings.setOverlookingGesturesEnabled(((CheckBox) v).isChecked());    }    /**     * 交通地图模式     *     * @param v     */    public void setTrafficMap(View v){        if (trafficMap.isChecked())        {            mBaiduMap.setTrafficEnabled(true);        } else        {            mBaiduMap.setTrafficEnabled(false);        }    }    /**     * 是否启用指南针图层     *      * @param v     */    public void setCompassEnable(View v) {        mUiSettings.setCompassEnabled(((CheckBox) v).isChecked());    }    public void locationSet(){        mBaiduMap = mMapView.getMap();        MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15f);        mBaiduMap.setMapStatus(msu);        // 定位初始化        locationClient = new LocationClient(this);        firstLocation =true;        // 设置定位的相关配置        LocationClientOption option = new LocationClientOption();        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);        option.setOpenGps(true);        option.setCoorType("bd09ll"); // 设置坐标类型        option.setScanSpan(1000);        locationClient.setLocOption(option);        // 设置自定义图标        BitmapDescriptor myMarker = BitmapDescriptorFactory                .fromResource(R.drawable.navi_map);        MyLocationConfigeration config = new MyLocationConfigeration(                MyLocationConfigeration.LocationMode.FOLLOWING, true, myMarker);        locationClient.registerLocationListener(new BDLocationListener() {            @Override            public void onReceiveLocation(BDLocation location) {                // map view 销毁后不在处理新接收的位置                if (location == null || mMapView == null)                    return;                // 构造定位数据                MyLocationData locData = new MyLocationData.Builder()                        .accuracy(location.getRadius())                                // 此处设置开发者获取到的方向信息,顺时针0-360                        .direction(100).latitude(location.getLatitude())                        .longitude(location.getLongitude()).build();                // 设置定位数据                mBaiduMap.setMyLocationData(locData);                // 第一次定位时,将地图位置移动到当前位置                if (firstLocation)                {                    firstLocation = false;                    LatLng xy = new LatLng(location.getLatitude(),                            location.getLongitude());                    MapStatusUpdate status = MapStatusUpdateFactory.newLatLng(xy);                    mBaiduMap.animateMapStatus(status);                }            }        });    }    @Override    protected void onStart()    {        // 如果要显示位置图标,必须先开启图层定位        mBaiduMap.setMyLocationEnabled(true);        if (!locationClient.isStarted())        {            locationClient.start();        }        super.onStart();    }    @Override    protected void onStop()    {        // 关闭图层定位        mBaiduMap.setMyLocationEnabled(false);        locationClient.stop();        super.onStop();    }    @Override    protected void onPause() {        // MapView的生命周期与Activity同步,        // 当activity挂起时需调用MapView.onPause()        mMapView.onPause();        super.onPause();    }    @Override    protected void onResume() {        // MapView的生命周期与Activity同步,        // 当activity恢复时需调用MapView.onResume()        mMapView.onResume();        super.onResume();    }    @Override    protected void onDestroy() {        // MapView的生命周期与Activity同步,        // 当activity销毁时需调用MapView.destroy()        mMapView.onDestroy();        super.onDestroy();    }}

 

作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
版权声明:本文版权归杰瑞教育技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:JRedu技术交流