前提
- 下载 locSDK_x.xx.jar 和对应的 liblocSDKxx.so ,百度基础地图包中不包括定位的jar包,可以从demo工程的libs 中直接拷贝放入所需的工程中。
- 导入定位的jar包。 (可参照百度地图之一基础地图)
- 申请好百度地图key(可参照百度地图之一基础地图)
定位代码
- 在AndroidManifest.xml 添加各种权限 和服务
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
- 写java文件
package com.hand.jimda.mybaidumap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
public class MainMapActivity extends AppCompatActivity {
MapView mMapView = null;
private BaiduMap mBaiduMap;
private MyLocationListener mLocationListener;
private LocationClient mLocationClient;
private MyLocationConfiguration.LocationMode mCurrentMode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main_map);
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
initview();
intloc();
}
private void initview() {
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
mLocationClient.stop();
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
mLocationClient.start();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
mLocationClient.stop();
}
private void intloc() {
mBaiduMap.setMyLocationEnabled(true);
mLocationClient = new LocationClient(this);
mLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(mLocationListener);
initLocation();
}
/**
* 定位SDK监听函数
*/
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
mBaiduMap.setMyLocationEnabled(true);
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
.direction(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
MyLocationConfiguration config = new MyLocationConfiguration(mCurrentMode, true, null);
mBaiduMap.setMyLocationConfigeration(config);
LatLng latlng = new LatLng(location.getLatitude(), location.getLongitude());
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newLatLng(latlng));
}
}
/**
* 定位初始化
*/
private void initLocation() {
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy
);
option.setCoorType("bd09ll");
int span = 10000;
option.setScanSpan(span);
option.setIsNeedAddress(true);
option.setOpenGps(true);
option.setLocationNotify(true);
option.setIsNeedLocationDescribe(true);
option.setIsNeedLocationPoiList(true);
option.setIgnoreKillProcess(false);
option.SetIgnoreCacheException(false);
option.setEnableSimulateGps(false);
mLocationClient.setLocOption(option);
mLocationClient.start();
}
}
效果