集成高德地图之定位

 今天的内容是一个简单的高德定位,获取当前的位置,刚开看高德文档api有些头晕,于是我就自己总结了一下,如有大神请勿喷,如有转载记得标明转载处:https://blog.csdn.net/zeyu_rensheng/article/details/80634865;

高德api地址是http://lbs.amap.com/api/android-location-sdk/guide/android-location/getlocation


一、build.gradle view plain cop

  1. //高德地图定位  
  2.     compile 'com.amap.api:location:latest.integration'  

二、清单文件AndroidMainfest.xml view pla copy

  1. <!--权限-->  
  2. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>   view plain c
  1. <!--高德地图定位-->  
  2. <meta-data android:name="com.amap.api.v2.apikey" android:value="8049c3fe80541356b00a6055f0ef9789">  
  3. </meta-data>  
  4. <service android:name="com.amap.api.location.APSService"></service>  

三、MainActivity

1、声明对象 view plain copy

  1. //声明AMapLocationClient类对象  
  2. public AMapLocationClient mLocationClient = null;  
  3. //声明定位回调监听器  
  4. public AMapLocationListener mLocationListener = new MyAMapLocationListener();  
  5. //声明AMapLocationClientOption对象  
  6. public AMapLocationClientOption mLocationOption = null;  

2、高德定位方法 view plain copy

  1. // 高德定位  
  2. public void getPositioning() {  
  3.     //初始化定位  
  4.     mLocationClient = new AMapLocationClient(mContext);  
  5.     //设置定位回调监听  
  6.     mLocationClient.setLocationListener(mLocationListener);  
  7.     //初始化AMapLocationClientOption对象  
  8.     mLocationOption = new AMapLocationClientOption();  
  9.     //获取一次定位结果:  
  10.     //该方法默认为false。  
  11.     mLocationOption.setOnceLocation(true);  
  12.     //获取最近3s内精度最高的一次定位结果:  
  13.     //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。  
  14.     mLocationOption.setOnceLocationLatest(true);  
  15.     //设置是否返回地址信息(默认返回地址信息)  
  16.     mLocationOption.setNeedAddress(true);  
  17.     //设置是否允许模拟位置,默认为true,允许模拟位置  
  18.     mLocationOption.setMockEnable(true);  
  19.     //给定位客户端对象设置定位参数  
  20.     mLocationClient.setLocationOption(mLocationOption);  
  21.     //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。  
  22.     mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);  
  23.     //启动定位  
  24.     mLocationClient.startLocation();  
  25. }  

3、高德定位回调 

class MyAMapLocationListener implements AMapLocationListener{  
    @Override  
    public void onLocationChanged(final AMapLocation aMapLocation) {  
        new Thread(new Runnable() {  
            @Override  
            public void run() {  
                //可在其中解析amapLocation获取相应内容。
                int locationType = aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
                double latitude = aMapLocation.getLatitude();//获取纬度
                double longitude = aMapLocation.getLongitude();//获取经度
                float accuracy = aMapLocation.getAccuracy();//获取精度信息
                String address = aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结                       果,网络定位结果中会有地址信息,GPS定位不返回地址。
                aMapLocation.getCountry();//国家信息
                aMapLocation.getProvince();//省信息
                aMapLocation.getCity();//城市信息
                aMapLocation.getDistrict();//城区信息
                aMapLocation.getStreet();//街道信息
                aMapLocation.getStreetNum();//街道门牌号信息
                aMapLocation.getCityCode();//城市编码
                aMapLocation.getAdCode();//地区编码
                aMapLocation.getAoiName();//获取当前定位点的AOI信息
                aMapLocation.getBuildingId();//获取当前室内定位的建筑物Id
                aMapLocation.getFloor();//获取当前室内定位的楼层
                //获取定位时间
                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                Date date = new Date(aMapLocation.getTime());
                df.format(date);
            }  
        }).start();  
    }  
}  


猜你喜欢

转载自blog.csdn.net/zeyu_rensheng/article/details/80634865