资讯专栏INFORMATION COLUMN

百度地图的使用-定位-获取位置信息

winterdawn / 2742人阅读

摘要:目标实现定位到当前所在位置实现当前定位获取当前地址,省份,街道等获取经纬度修改缩放比例去除百度地图修改定位图片如下效果图上代码在使用各组件之前初始化信息,传入注意该方法要再方法之前实现获取地图控件引用移除的声明类开启定位图层注册监听函数设置

目标:实现定位到当前所在位置

实现当前定位

获取当前地址,省份,街道等

获取经纬度

修改缩放比例

去除百度地图logo

修改定位图片如下:

效果图:

上代码

public class MainActivity extends AppCompatActivity {

    private MapView mMapView = null;
    BaiduMap mBaiduMap;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        //注意该方法要再setContentView方法之前实现
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.bmapView);
        mBaiduMap = mMapView.getMap();
        //移除baidu的logo
        mMapView.removeViewAt(1);
        mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(20.0f).build()));
        mLocationClient = new LocationClient(getApplicationContext());
        //声明LocationClient类
        mLocationClient.registerLocationListener(myListener);
        // 开启定位图层
        mBaiduMap.setMyLocationEnabled(true);
        //注册监听函数
        // 设置定位图层的配置(定位模式,是否允许方向信息,用户自定义定位图标)
        BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory
                .fromResource(R.drawable.aa);
        MyLocationConfiguration config = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.FOLLOWING, true, mCurrentMarker);
        mBaiduMap.setMyLocationConfiguration(config);
//        getLocation();
        getlatAndLng();
//        mLocationClient.start();


    }

    private void showMyLocate(MyLocationData location) {


        MyLocationData locData = new MyLocationData.Builder()
                .accuracy(location.accuracy)
                // 此处设置开发者获取到的方向信息,顺时针0-360
                .direction(location.direction).latitude(location.latitude)
                .longitude(location.longitude).build();
        // 设置定位数据
        mBaiduMap.setMyLocationData(locData);



//        mBaiduMap.setMyLocationEnabled(false);

    }


    public LocationClient mLocationClient = null;
    private MyLocationListener myListener = new MyLocationListener();

    private void getLocation() {

        LocationClientOption option = new LocationClientOption();

        option.setIsNeedAddress(true);
        //可选,是否需要地址信息,默认为不需要,即参数为false
        //如果开发者需要获得当前点的地址信息,此处必须为true

        mLocationClient.setLocOption(option);
        //mLocationClient为第二步初始化过的LocationClient对象
        //需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用
        //更多LocationClientOption的配置,请参照类参考中LocationClientOption类的详细说明

        mLocationClient.start();

    }

    private void getlatAndLng() {


        LocationClientOption option = new LocationClientOption();

        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
        //可选,设置定位模式,默认高精度
        //LocationMode.Hight_Accuracy:高精度;
        //LocationMode. Battery_Saving:低功耗;
        //LocationMode. Device_Sensors:仅使用设备;

        option.setCoorType("bd09ll");
        //可选,设置返回经纬度坐标类型,默认gcj02
        //gcj02:国测局坐标;
        //bd09ll:百度经纬度坐标;
        //bd09:百度墨卡托坐标;
        //海外地区定位,无需设置坐标类型,统一返回wgs84类型坐标

        option.setScanSpan(1000);
        //可选,设置发起定位请求的间隔,int类型,单位ms
        //如果设置为0,则代表单次定位,即仅定位一次,默认为0
        //如果设置非0,需设置1000ms以上才有效

        option.setOpenGps(true);
        //可选,设置是否使用gps,默认false
        //使用高精度和仅用设备两种定位模式的,参数必须设置为true

        option.setLocationNotify(true);
        //可选,设置是否当GPS有效时按照1S/1次频率输出GPS结果,默认false

        option.setIgnoreKillProcess(false);
        //可选,定位SDK内部是一个service,并放到了独立进程。
        //设置是否在stop的时候杀死这个进程,默认(建议)不杀死,即setIgnoreKillProcess(true)

        option.SetIgnoreCacheException(false);
        //可选,设置是否收集Crash信息,默认收集,即参数为false

        option.setWifiCacheTimeOut(5 * 60 * 1000);
        //可选,7.2版本新增能力
        //如果设置了该接口,首次启动定位时,会先判断当前WiFi是否超出有效期,若超出有效期,会先重新扫描WiFi,然后定位

        option.setEnableSimulateGps(false);
        //可选,设置是否需要过滤GPS仿真结果,默认需要,即参数为false

        mLocationClient.setLocOption(option);
        //mLocationClient为第二步初始化过的LocationClient对象
        //需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用
        //更多LocationClientOption的配置,请参照类参考中LocationClientOption类的详细说明
        mLocationClient.start();
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        // 当不需要定位图层时关闭定位图层
        mBaiduMap.setMyLocationEnabled(false);
        mMapView.onDestroy();
    }

    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mMapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mMapView.onPause();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_map_normal:
                mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
                break;
            case R.id.menu_map_satellite:
                mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
                break;
            case R.id.menu_map_none:
                mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);
                break;

        }
        return true;
    }


    class MyLocationListener extends BDAbstractLocationListener {


        @Override
        public void onReceiveLocation(BDLocation bdLocation) {

            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(bdLocation.getRadius())
                    // 此处设置开发者获取到的方向信息,顺时针0-360
                    .direction(bdLocation.getDirection()).latitude(bdLocation.getLatitude())
                    .longitude(bdLocation.getLongitude()).build();
            mBaiduMap.setMyLocationData(locData);

            String addr = bdLocation.getAddrStr();    //获取详细地址信息
            String country = bdLocation.getCountry();    //获取国家
            String province = bdLocation.getProvince();    //获取省份
            String city = bdLocation.getCity();    //获取城市
            String district = bdLocation.getDistrict();    //获取区县
            String street = bdLocation.getStreet();    //获取街道信息
            showMyLocate(locData);
        }
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/14261.html

相关文章

  • 百度地图使用定位获取位置信息

    摘要:目标实现定位到当前所在位置实现当前定位获取当前地址,省份,街道等获取经纬度修改缩放比例去除百度地图修改定位图片如下效果图上代码在使用各组件之前初始化信息,传入注意该方法要再方法之前实现获取地图控件引用移除的声明类开启定位图层注册监听函数设置 目标:实现定位到当前所在位置 实现当前定位 获取当前地址,省份,街道等 获取经纬度 修改缩放比例 去除百度地图logo 修改定位图片如下:sho...

    darkerXi 评论0 收藏0
  • 使用百度地图API获取手动定位位置信息实例讲解

    摘要:需求后台新增编辑活动项目时,用户可以自己通过地图插件选择位置手动定位,选择后,系统能够获得当前位置的地址信息以及坐标信息,以方便后续程序的处理。技术上主要以百度地图为核心,弹出层和百度中结果配合,父子页面传值引导达成目标。 需求 后台新增/编辑活动项目时,用户可以自己通过地图插件选择位置(手动定位),选择后,系统能够获得当前位置的地址信息以及坐标信息,以方便后续程序的处理。 代码 不啰...

    suosuopuo 评论0 收藏0
  • 地图定位信息详解

    摘要:原文首发于微信公众号,欢迎关注交流最近的项目涉及到百度地图的使用,项目组通知使用天地图替代百度地图,一个原因是天地图是国家测绘地理信息局建设的,企业可以使用其公众版本进行开发以提供相关的地图信息服务,较其他地图具有权威性,当然天地图提供的 原文首发于微信公众号:jzman-blog,欢迎关注交流! 最近的项目涉及到百度地图的使用,项目组通知使用天地图替代百度地图,一个原因是天地图是国家...

    zhiwei 评论0 收藏0
  • 使用HTML5地理位置定位到城市方法及注意事项

    摘要:介绍本文将简述一下如何通过和百度地图开放平台提供的来实现对浏览器的定位,同时记录了遇到的问题和解决方案。使用方法首先,我们需要引入百度地图文件参数表示您加载的版本,使用及以前版本可使用此方式引用。 介绍 本文将简述一下如何通过HTML5和百度地图开放平台提供的API来实现对浏览器的定位,同时记录了遇到的问题和解决方案。实现效果为显示出用户所在的省市,即: XXX省 XXX市。 实现思路...

    fsmStudy 评论0 收藏0
  • 百度地图使用定位—逆地理编码(即坐标转地址)

    摘要:先上效果定位拖动定位定位动画动画结束显示地址实现思路中心点不变,在百度地图图层上覆盖自定义的定位布局拖动地图时,隐藏地址显示,定位标示落下来后显示地址拿到百度地图的拖动监听拿到中心点经纬度,逆地理编码即坐标转地址具体实现布局在主界面布局上覆 先上效果: 定位+拖动定位 定位动画 动画结束显示地址 showImg(https://segmentfault.com/img/bVbcQ8...

    codecraft 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<