导入官方jar包
依赖
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="" />
权限
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 用于读取手机当前的状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 访问网络,网络定位需要上网 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<!-- SD卡读取权限,用户写入离线定位数据-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
tools:ignore="ProtectedPermissions"></uses-permission>
初始化
// 初始化百度地图SDK
SDKInitializer.initialize(getApplicationContext());
布局
···java
<com.baidu.mapapi.map.MapView
android:id="@+id/mmap"
android:layout_width=“match_parent”
android:layout_height=“match_parent” >
</com.baidu.mapapi.map.MapView>
main
```java
public class MapFragment extends android.support.v4.app.Fragment {
private MapView mMapView = null;
private BaiduMap mMapViewMap;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = View.inflate(getContext(), R.layout.layout_map, null);
//获取地图控件引用
mMapView = (MapView) view.findViewById(R.id.mmap);
mMapViewMap = mMapView.getMap();
//显示卫星图层
mMapViewMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
//定位
mMapViewMap.setMyLocationEnabled(true);
MyLocationData locationData = new MyLocationData.Builder()
//40.0481292144,116.3065021771
.latitude()
.longitude()
.build();
// 设置定位数据
mMapViewMap.setMyLocationData(locationData);
BitmapDescriptor marker = BitmapDescriptorFactory
.fromResource(R.drawable.icon_openmap_mark);
MyLocationConfiguration config = new MyLocationConfiguration(
MyLocationConfiguration.LocationMode.FOLLOWING, true, marker);
mMapViewMap.setMyLocationConfigeration(config);
return view;
}
@Override
public void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时必须调用mMapView.onDestroy()
mMapView.onDestroy();
}
}
可以加广播,也可以不加
BroadcastReceiver receiver = new BroadcastReceiver() {
//复写其必须有的方法onReceive,第一个参数上下文,第二个参数是传过来的intent.
public void onReceive(Context context, Intent intent) {
//参数intent.getAction得到发送过来的Intent里的action动作
String action = intent.getAction();
//创建一个null的字符串.
String msg = "";
//进行检查,if判断字符串是否相同,action.equals(),直接用SDKInitializer.SDK_BROADTCAST_ACTION_ST...就可以了
if (action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK)) {
msg = "Key验证成功!";
}//判断SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR :验证失败
else if (action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) {
msg = "Key验证失败!";
}//判断SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR :网络错误
else if (action.equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) {
msg = "网络错误";
}
//弹吐司,内容就是字符串.
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
}
};
//代码进行广播的注册配置,也可以在清单配置文件里进行配置
IntentFilter filter = new IntentFilter();
//添加过滤条件,IntentFilter对象.addAction();内容就是SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_....
filter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK);
filter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);
filter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);
//进行广播注册,1.要注册广播类对象 2配置文件IntentFilter对象.
registerReceiver(receiver, filter);