參考官方文檔: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