百度定位
修改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);
}
“`