百度定位
修改AndroidManifest.xml
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="密钥"/>
<service android:name="com.baidu.location.f" android:enabled="true"
android:process=":remote">
</service>
确定自己的经纬度
public LocationClient mLocationClient;
mLocationClient = new LocationClient(getApplicationContext());
mLocationClient.registerLocationListener(new LocationListener());
private void requestLocation() {
//initLocation();
mLocationClient.start();
}
public class MyLocationListener implements BDLocationListener{
@Override
public void onReceiveLocation(BDLocation location){
//自行发挥
//location.getLatitude();
//location.getLongitude();
}
}
实时更新位置信息、定位模式、看得懂的位置信息
private void initLocation(){
LocationClientOption option = new LocationClientOption();
//设置每隔5秒更新一次
option.setScanSpan(5000);
//设置定位模式为只使用GPS定位。另外两种Hight_Accuracy和Battery_Saving
option.setLocationMode(LocationClientOption.LocationMode.Device_Sensors);
//设置看得懂的位置信息 在MyLocationListener中可以获得其他位置信息,如省市街道等。
option.setIsNeedAddress(true);
mLocationClient.setLocOption(option);
}
@Override
protected void onDestroy() {
super.onDestroy();
mLocationClient.stop(); //停止定位
// mapView.onDestroy();
// baiduMap.setMyLocationEnabled(false);
}
使用百度地图
显示地图
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
SDKInitiaLizer.initialize(getApplicationContext());
mapView = (MapView)findViewById(R.id.bmapView);
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
@Override
protected void onDestroy() {
// super.onDestroy();
// mLocationClient.stop(); //停止定位
mapView.onDestroy();
// baiduMap.setMyLocationEnabled(false);
}
移动到我的位置
private boolean isFirstLocate = true;
//地图总控制器
BaiduMap baiduMap = mapView.getMap();
baiduMap.setMyLocationEnabled(true);
private void navigateTo(BDLocation location) {
if (isFirstLocate) {
//定位到经纬度
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);
baiduMap.animateMapStatus(update);
//缩放
update = MapStatusUpdateFactory.zoomTo(16f);
baiduMap.animateMapStatus(update);
isFirstLocate = false;
}
//让“我”显示在地图上
MyLocationData.Builder locationBuilder = new MyLocationData.
Builder();
locationBuilder.latitude(location.getLatitude());
locationBuilder.longitude(location.getLongitude());
MyLocationData locationData = locationBuilder.build();
baiduMap.setMyLocationData(locationData);
}
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
if (location.getLocType() == BDLocation.TypeGpsLocation
|| location.getLocType() == BDLocation.TypeNetWorkLocation) {
navigateTo(location);
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// mLocationClient.stop();
// mapView.onDestroy();
baiduMap.setMyLocationEnabled(false);
}
“`