package com.ditu.kaiwei.gaode2;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps.AMap;
import com.amap.api.maps.LocationSource;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.MyLocationStyle;
public class Gaode extends AppCompatActivity implements LocationSource, AMapLocationListener {
MapView mMapView = null;
AMap aMap;
MyLocationStyle myLocationStyle;
OnLocationChangedListener mListener;
AMapLocationClient mlocationClient;
AMapLocationClientOption mLocationOption;
Button daohang;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gaode);
//獲取地圖控件引用
mMapView = (MapView) findViewById(R.id.map);
//在activity執行onCreate時執行mMapView.onCreate(savedInstanceState),創建地圖
mMapView.onCreate(savedInstanceState);
//初始化地圖控制器對象
aMap = mMapView.getMap();
myLocationStyle = new MyLocationStyle();//初始化定位藍點樣式類
aMap.setMyLocationStyle(myLocationStyle);//設置定位藍點的Style
aMap.getUiSettings().setMyLocationButtonEnabled(true);//設置默認定位按鈕是否顯示,非必需設置。
// 設置定位監聽
aMap.setLocationSource(this);
// 設置為true表示顯示定位層並可觸發定位,false表示隱藏定位層並不可觸發定位,默認是false
aMap.setMyLocationEnabled(true);
// 設置定位的類型為定位模式,有定位、跟隨或地圖根據面向方向旋轉幾種
aMap.setMyLocationType(AMap.LOCATION_TYPE_MAP_FOLLOW);
daohang = (Button)findViewById(R.id.button2);
daohang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(); //就是他
intent.setClass(Gaode.this,daohangA.class); //第一個是當前的上下文信息,第二個是我們要跳轉的類
startActivity(intent); //開始就是調用一個新的Activity
Gaode.this.finish(); //完成就是關閉啊
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity執行onDestroy時執行mMapView.onDestroy(),銷毀地圖
mMapView.onDestroy();
if(null != mlocationClient){
mlocationClient.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 activate(OnLocationChangedListener listener) {
mListener = listener;
if (mlocationClient == null) {
//初始化定位
mlocationClient = new AMapLocationClient(this);
//初始化定位參數
mLocationOption = new AMapLocationClientOption();
//設置定位回調監聽
mlocationClient.setLocationListener(this);
//設置為高精度定位模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//設置定位參數
mlocationClient.setLocationOption(mLocationOption);
// 此方法為每隔固定時間會發起一次定位請求,為了減少電量消耗或網絡流量消耗,
// 注意設置合適的定位時間的間隔(最小間隔支持為2000ms),並且在合適時間調用stopLocation()方法來取消定位請求
// 在定位結束后,在合適的生命周期調用onDestroy()方法
// 在單次定位情況下,定位無論成功與否,都無需調用stopLocation()方法移除請求,定位sdk內部會移除
mlocationClient.startLocation();//啟動定位
}
}
@Override
public void deactivate() {
mListener = null;
if (mlocationClient != null) {
mlocationClient.stopLocation();
mlocationClient.onDestroy();
}
mlocationClient = null;
}
@Override
public void onLocationChanged(AMapLocation amapLocation) {
if (mListener != null&&amapLocation != null) {
if (amapLocation != null
&&amapLocation.getErrorCode() == 0) {
mListener.onLocationChanged(amapLocation);// 顯示系統小藍點
} else {
String errText = "定位失敗," + amapLocation.getErrorCode()+ ": " + amapLocation.getErrorInfo();
Log.e("AmapErr",errText);
}
}
}
}