我是靠谱客的博主 感动往事,最近开发中收集的这篇文章主要介绍百度地图3.7.1获取当前的位置,并自定义自身位置的图标,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

和定位的位置相关的有两个大类

//位置
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获取当前的位置,并自定义自身位置的图标所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(195)

评论列表共有 0 条评论

立即
投稿
返回
顶部