Android 高德定位实现

  1. import com.amap.api.location.AMapLocation;  
  2. import com.amap.api.location.AMapLocationClient;  
  3. import com.amap.api.location.AMapLocationClientOption;  
  4. import com.amap.api.location.AMapLocationListener;  
  5. import com.amap.api.location.AMapLocationClientOption.AMapLocationMode;  
  6. import com.haiyisoft.android.shell.R;  
  7.   
  8. import android.app.Activity;  
  9. import android.os.Bundle;  
  10.   
  11. public class LocationActivity extends Activity implements AMapLocationListener{  
  12.   
  13.     /** 声明mlocationClient对象 */  
  14.     private AMapLocationClient mlocationClient = null;  
  15.       
  16.     /** 声明mLocationOption对象 */  
  17.     private AMapLocationClientOption mLocationOption = null;  
  18.       
  19.     @Override  
  20.     protected void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.hy_notify_layout);  
  23.         initLocation();  
  24.     }  
  25.       
  26.     /** 
  27.      * 获取定位坐标 
  28.      */  
  29.     public void initLocation() {  
  30.         mlocationClient = new AMapLocationClient(this);  
  31.         //初始化定位参数  
  32.         mLocationOption = new AMapLocationClientOption();  
  33.         //设置定位监听  
  34.         mlocationClient.setLocationListener(this);  
  35.         //设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式  
  36.         mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);  
  37.         //设置定位间隔,单位毫秒,默认为2000ms  
  38.         mLocationOption.setInterval(2000);  
  39.         //设置是否只定位一次,默认为false  
  40.         mLocationOption.setOnceLocation(true);  
  41.         //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。  
  42.         //如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会。  
  43.         mLocationOption.setOnceLocationLatest(true);  
  44.         //设置定位参数  
  45.         mlocationClient.setLocationOption(mLocationOption);  
  46.         // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,  
  47.         // 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求  
  48.         // 在定位结束后,在合适的生命周期调用onDestroy()方法  
  49.         // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除  
  50.         //启动定位  
  51.         mlocationClient.startLocation();  
  52.     }  
  53.       
  54.     /** 
  55.      * 高德定位回调 
  56.      */  
  57.     @Override  
  58.     public void onLocationChanged(AMapLocation amapLocation) {  
  59.         if (amapLocation != null) {  
  60.             Double latitude = amapLocation.getLatitude();  
  61.             Double longitude = amapLocation.getLongitude();  
  62.         }  
  63.     }  
  64.   
  65.     @Override  
  66.     protected void onDestroy() {  
  67.         super.onDestroy();  
  68.         mlocationClient.unRegisterLocationListener(this);  
  69.         mlocationClient = null;  
  70.     }  
  71.       
  72. }  

猜你喜欢

转载自blog.csdn.net/zjy_android/article/details/79584912