博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AndroidStudio下加入百度地图的使用 (三)——API基本方法及常量属性
阅读量:6843 次
发布时间:2019-06-26

本文共 7716 字,大约阅读时间需要 25 分钟。

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

(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中自带的服务,只需如此定义即可

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

第三步: 在监听事件方法中设置地图的使用,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();    }}

 

作者:杰瑞教育
出处:
 
版权声明:本文版权归
技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:
 
你可能感兴趣的文章
设计模式(一)简单工厂(创建型)(Java&&PHP)
查看>>
Code First开发系列之数据库迁移
查看>>
UI方面书籍推荐
查看>>
Spark SQL概念学习系列之Spark SQL 优化策略(五)
查看>>
Java:基本数据类型包装类
查看>>
HDU 4917 Permutation
查看>>
pgpool-II的 FATAL: role "nobody" does not exist 错误
查看>>
jsp路径
查看>>
关于location.href几种用法的区别
查看>>
【转】拷贝构造函数/深拷贝/浅拷贝
查看>>
什么是类比估算法=自上而下的估算
查看>>
[Java] Java 打包成jar包 和 解压jar包
查看>>
模拟ajax的 script请求
查看>>
2013年小米校园招聘笔试题
查看>>
About me
查看>>
单片机第13课:串口通信---向计算机发送数据
查看>>
[译]更改自定义活动设计器上的图标
查看>>
使用WF4 状态机CTP1 进行工作流开发
查看>>
android studio 开发android app 真机调试
查看>>
[stm32] STM32的通用定时器TIMx系统了解
查看>>