参考官方文档:http://lbs.amap.com/api/android-location-sdk/guide/create-project/get-keyandroid
对于签名文件的获取建议参考:http://blog.csdn.net/caben_/article/details/52708169,经过签名文件能够使咱们在其余电脑上key不会报错。git
配置key的时候注意name不变:github
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="b1b7d5f1feb8be38b284c9e2aabab87b">
</meta-data>
参考官方文档:http://lbs.amap.com/api/android-location-sdk/guide/android-location/getlocation/api
对于Android6.0权限咱们能够在build中声明 targetSdkVersion 22 小于23便可。这样作会默认打开6.0以上须要从新申请的权限,咱们也能够在代码中动态处理6.0以上权限申请,相对麻烦一些。ide
public class MainActivity extends AppCompatActivity implements AMapLocationListener, LocationSource { private MapView mMapView = null; private AMap aMap; //标识,用于判断是否只显示一次定位信息和用户从新定位 private boolean isFirstLoc = true; //声明mListener对象,定位监听器 private OnLocationChangedListener mListener = null; //声明AMapLocationClient类对象 public AMapLocationClient mLocationClient = null; //声明AMapLocationClientOption对象 public AMapLocationClientOption mLocationOption = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取地图控件引用 mMapView = (MapView) findViewById(R.id.map); //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),建立地图 mMapView.onCreate(savedInstanceState); if (aMap == null) { aMap = mMapView.getMap(); //设置显示定位按钮 而且能够点击 UiSettings settings = aMap.getUiSettings(); aMap.setLocationSource(this);//设置了定位的监听 // 是否显示定位按钮 settings.setMyLocationButtonEnabled(true); aMap.setMyLocationEnabled(true);//显示定位层而且能够触发定位,默认是flase } // 设置定位监听 aMap.setLocationSource(this); // 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false aMap.setMyLocationEnabled(true); // 设置定位的类型为定位模式,有定位、跟随或地图根据面向方向旋转几种 aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE); initLocation(); } private void initLocation() { //初始化定位 mLocationClient = new AMapLocationClient(getApplicationContext()); //设置定位回调监听 mLocationClient.setLocationListener(this); //初始化AMapLocationClientOption对象 mLocationOption = new AMapLocationClientOption(); //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); //获取一次定位结果: //该方法默认为false。 mLocationOption.setOnceLocation(true); //获取最近3s内精度最高的一次定位结果: //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。若是设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。 mLocationOption.setOnceLocationLatest(true); //给定位客户端对象设置定位参数 mLocationClient.setLocationOption(mLocationOption); //启动定位 mLocationClient.startLocation(); } @Override protected void onDestroy() { super.onDestroy(); mLocationClient.stopLocation();//中止定位后,本地定位服务并不会被销毁 mLocationClient.onDestroy();//销毁定位客户端,同时销毁本地定位服务 //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView.onResume (),从新绘制加载地图 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制 mMapView.onPause(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态 mMapView.onSaveInstanceState(outState); } @Override public void onLocationChanged(AMapLocation amapLocation) { if (amapLocation != null) { if (amapLocation.getErrorCode() == 0) { //可在其中解析amapLocation获取相应内容。更多内容能够打断点查看,也可参考官方文档 Log.i("Talon", amapLocation.getAddress()); // 若是不设置标志位,此时再拖动地图时,它会不断将地图移动到当前的位置 if (isFirstLoc) { //设置缩放级别 aMap.moveCamera(CameraUpdateFactory.zoomTo(17)); //将地图移动到定位点 aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(amapLocation.getLatitude(), amapLocation.getLongitude()))); //点击定位按钮 可以将地图的中心移动到定位点 mListener.onLocationChanged(amapLocation); //添加图钉// aMap.addMarker(getMarkerOptions(amapLocation)); isFirstLoc = false; } else { //定位失败时,可经过ErrCode(错误码)信息来肯定失败的缘由,errInfo是错误信息,详见错误码表。 Log.e("AmapError", "location Error, ErrCode:" + amapLocation.getErrorCode() + ", errInfo:" + amapLocation.getErrorInfo()); } } } } //激活定位 @Override public void activate(OnLocationChangedListener onLocationChangedListener) { mListener = onLocationChangedListener; } //中止定位 @Override public void deactivate() { mListener = null; }}小白我的GitHub地址:https://github.com/IT-Talon/GaodeMapDemo