安卓入门之百度地图应用
码云仓库地址
最后效果:
![最终效果](https://i-blog.csdnimg.cn/blog_migrate/ebf6bfedcf6365e309867f0003fb4717.png#pic_center)
代码过程
1.在百度地图官网获取自己的key(AK)
![百度官网](https://i-blog.csdnimg.cn/blog_migrate/3aba92db124a79e77a2c534f474e8930.png#pic_center)
2.在工程的“ AndroidManifest.xml ”文件添加Service和权限
service:
<service android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote"/>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="你自己的key"/>
权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
3.编写activity_main.xml布局文件(附部分代码)
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
<!--位置文本布局的背景色代码的前2位代码为透明度-->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#e0000000"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="纬度:"
android:textColor="#ffffff"
android:textSize="15dp" />
<TextView
android:id="@+id/tv_Lat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textColor="#ffffff"
android:textSize="15dp" />
</LinearLayout>
4.编写Mainactivity.java(附部分代码)
private class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation bdLocation) {
tv_Lat.setText(bdLocation.getLatitude()+"");
tv_Lon.setText(bdLocation.getLongitude()+"");
tv_Add.setText(bdLocation.getAddrStr());
if(bdLocation.getLocType()==BDLocation.TypeGpsLocation || bdLocation.getLocType()==BDLocation.TypeNetWorkLocation){
navigateTo(bdLocation);
}
}
}
private void navigateTo(BDLocation bdLocation) {
if(isFirstLocate){
LatLng ll = new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());
MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);
baiduMap.animateMapStatus(update);
isFirstLocate = false;
}
}
protected void onResume() {
super.onResume();
mapView.onResume();
}
protected void onPause() {
super.onPause();
mapView=(MapView)findViewById(R.id.bmapView);
mapView.onResume();
}
protected void onDestroy() {
super.onDestroy();
mLocationClient.stop();
mapView.onDestroy();
}
中间遇到的问题
1.在代码编写完之后我选择模拟器调试,然后发现虽然地图出来了,但是位置显示的是北京
解决方式:后来在论坛里面找了一下,听说要使用真机调试
2.在AS里面不知道如何进行真机调试,没有Deployment Target Options
解决方式:后来查阅资料才知道在新版的AS里面,取消了Deployment Target Options,只要使用了开发者模式,然后启动了USB调试,AS会自动获取的