百度地图SDK定位Location

使用百度地图SDK进行定位
在开发一个地图相关的Android应用时,遇到了百度地图定位的一些问题。通过官方文档和示例,了解到定位的核心在于BDLocation对象及监听器的异步加载。官网提供了详尽的API,帮助开发者实现高效定位。

最近做一个跟地图有关的app,总结一些在百度地图Location上遇到的问题;
百度地图定位的官网连接:http://developer.baidu.com/map/index.php?title=android-locsdk
官网的demo已经写的很详细了 这里主要介绍一下它的代码吧。
核心的两个方法:

private void getLocation () {
        blocation = new LocationClient(this.getApplicationContext());
        blocation.registerLocationListener(new BDLocationListener() {       

            @Override
            public void onReceiveLocation(BDLocation location) {
                if (location == null)   return;
                txtShowMyLoc.setText(location.getLatitude()+","+location.getLongitude());
            }

        });
        setLocationOption();                
        blocation.start();  
    }
    //这个主要是对该定位的一些设置
    private void setLocationOption(){
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationMode.Hight_Accuracy);    
        option.setOpenGps(true);                //打开gps
        option.setCoorType("bd09ll");       //设置坐标类型                
        option.setIsNeedAddress(true);//设置地址信息,默认无地址信息
        option.setAddrType("all"); 
        option.setScanSpan(500);    //设置定位模式,小于1秒则一次定位;大于等于1秒则定时定位
        blocation.setLocOption(option);
    }

BDLocation location 查了一下官网api 提供了非常多的接口
这里写图片描述

这里还要注意一个问题就是

blocation.registerLocationListener(new BDLocationListener() {       

            @Override
            public void onReceiveLocation(BDLocation location) {
                if (location == null)   return;
                txtShowMyLoc.setText(location.getLatitude()+","+location.getLongitude());
            }

        });

这里的监听器是异步加载的

package xgpushdemo.qt.an.appmap; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; 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.MapView; import com.baidu.mapapi.map.MyLocationData; /*** * 百度定位、导航 * */ public class MainActivity extends Activity { private Button clickbtn; private TextView txt1; private TextView txt2; private MapView mMapView = null; private BaiduMap mBaiduMap=null; //定位相关申明 private LocationClient locationClient; //是否第一次定位 private Boolean isFirstloc=true; //是否开启 private Boolean isStart=true; private String la; private String lo; private String city; public BDLocationListener myListener=new BDLocationListener() { @Override public void onReceiveLocation(BDLocation bdLocation) { if(bdLocation==null||mMapView==null) return; MyLocationData myLocationData= new MyLocationData.Builder().accuracy(bdLocation.getRadius()).direction(100). latitude(bdLocation.getLatitude()).longitude(bdLocation.getLongitude()).build(); mBaiduMap.setMyLocationData(myLocationData); city= bdLocation.getCity(); la=bdLocation.getLatitude()+""; lo=bdLocation.getLongitude()+""; // if(isFirstloc){ // isFirstloc=false; // LatLng ll=new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude()); // MapStatusUpdate mapStatusUpdate= MapStatusUpdateFactory.newLatLngZoom(ll,16); // mBaiduMap.animateMapStatus(mapStatusUpdate); // } } };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值