概述
和定位的位置相关的有两个大类
//位置
LocationClient
//位置接口
BDLocationListener
很明显这个接口是用来监听位置的,和touch监听什么的都一样。动作都发生在监听里面。之前我们要对LocationClient进行一些设置.然后在监听里设置当前的位置数据。并判断是不是第一进入,如果是第一次进入直接显示我们的当前位置。
public class MainActivity extends Activity { private MapView map; private BaiduMap mBaidu; //位置 private LocationClient mLocationClient; //位置接口 private BDLocationListener myListener; //判断是不是第一次进入 private boolean isFirst = true; //记录经纬度 private double jing = 0; private double wei = 0; //自定义我的位置圆点 private BitmapDescriptor mIconLocation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //去除标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); //初始化百度地图 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); initView(); initLocation(); } private void initView() { map = (MapView) findViewById(R.id.map); //把视图对象转成BaiduMap mBaidu = map.getMap(); // 设置地图初始的位置 // MapStatusUpdate msu = MapStatusUpdateFactory.zoomBy(50.0f); // mBaidu.setMapStatus(msu); } private void initLocation() { mLocationClient = new LocationClient(getApplicationContext()); myListener = new MyLocationListener(); //注册监听 mLocationClient.registerLocationListener(myListener); //设置LocationClient LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备 option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系 int span = 1000; option.setIsNeedAddress(true);// 可选,设置是否需要地址信息,默认不需要 option.setOpenGps(true);// 可选,默认false,设置是否使用gps option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果 option.setIsNeedLocationDescribe(true);// 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近” option.setIgnoreKillProcess(false);// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死 option.SetIgnoreCacheException(false);// 可选,默认false,设置是否收集CRASH信息,默认收集 option.setEnableSimulateGps(false);// 可选,默认false,设置是否需要过滤gps仿真结果,默认需要 option.setScanSpan(span);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的 mLocationClient.setLocOption(option); //初始化图标 mIconLocation = BitmapDescriptorFactory.fromResource(R.drawable.navi_map_gps_locked); } }
接口监听
public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { //设置我当前位置的数据 MyLocationData data = new MyLocationData.Builder()// .accuracy(location.getRadius())// .direction(currentX)// .latitude(location.getLatitude())// .longitude(location.getLongitude())// .build(); mBaidu.setMyLocationData(data); //设置自定义的图片 MyLocationConfiguration config = new MyLocationConfiguration(com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.FOLLOWING , true,mIconLocation); mBaidu.setMyLocationConfigeration(config); //如果是第一次进入,会显示当前位置 if (isFirst) { jing = location.getLatitude(); wei = location.getLongitude(); LatLng la = new LatLng(jing, wei); MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(la); mBaidu.animateMapStatus(msu); isFirst = false; //当前位置的名称 Toast.makeText(MainActivity.this,location.getAddrStr(),0).show(); } } }
并且在activity的生命周期里进行联动
@Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); // 开启定位能功能 mBaidu.setMyLocationEnabled(true); if (!mLocationClient.isStarted()) //开启定位 mLocationClient.start(); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); // 停止定位功能 mBaidu.setMyLocationEnabled(false); //停止定位 mLocationClient.stop(); }
这样做的好处就是这个页面关闭就可以停止定位。
已定义原点的步骤也很简单,首先要声明
//自定义我的位置圆点
private BitmapDescriptor mIconLocation;
然后进行设置图片的操作
//初始化图标
mIconLocation = BitmapDescriptorFactory.fromResource(R.drawable.navi_map_gps_locked);
最后在监听里就可以设置图标了
//设置自定义的图片
MyLocationConfiguration config = new MyLocationConfiguration(com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.FOLLOWING
, true,mIconLocation);
mBaidu.setMyLocationConfigeration(config);
这样就可以设置一个自己想要的图标了
转载于:https://www.cnblogs.com/84126858jmz/p/5306300.html
最后
以上就是感动往事为你收集整理的百度地图3.7.1获取当前的位置,并自定义自身位置的图标的全部内容,希望文章能够帮你解决百度地图3.7.1获取当前的位置,并自定义自身位置的图标所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复