高德地图 定位等

1、定位功能:

    <com.amap.api.maps.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone" />

  

    AMap aMap;
    private Marker locationMarker;
    //声明AMapLocationClient类对象
    public AMapLocationClient mLocationClient = null;
    //声明定位回调监听器
    public AMapLocationListener mLocationListener = new AMapLocationListener() {
        @RequiresApi(api = Build.VERSION_CODES.N)
        @Override
        public void onLocationChanged(AMapLocation aMapLocation) {
            if (aMapLocation != null) {
                if (aMapLocation.getErrorCode() == 0) {

                    //取出经纬度
                    LatLng latLng = new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude());

                    //添加Marker显示定位位置
                    if (locationMarker == null) {
                        //如果是空的添加一个新的,icon方法就是设置定位图标,可以自定义
                        locationMarker = aMap.addMarker(new MarkerOptions()
                                .position(latLng)
                                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_adress)));
                    } else {
                        //已经添加过了,修改位置即可
                        locationMarker.setPosition(latLng);
                    }

                    //然后可以移动到定位点,使用animateCamera就有动画效果
                    aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));
                    aMapLocation.getProvince();//省信息
                    locateCity = aMapLocation.getCity();//城市信息

                    mLocationClient.stopLocation();//停止定位后,本地定位服务并不会被销毁
                } else {
                    //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
                    Log.e("AmapError", "location Error, ErrCode:"
                            + aMapLocation.getErrorCode() + ", errInfo:"
                            + aMapLocation.getErrorInfo());
                }
            }
        }
    };
    //初始化定位
    //声明AMapLocationClientOption对象
    public AMapLocationClientOption mLocationOption = null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //获取权限
        if (Build.VERSION.SDK_INT >= 23
                && getApplicationInfo().targetSdkVersion >= 23) {
            if (isNeedCheck) {
                checkPermissions(PERMISSIONS_STORAGE);
            }
        }
        mMapView.onCreate(savedInstanceState);
        initMap();
    }

    private void initMap() {

        if (aMap == null) {
            aMap = mMapView.getMap();
        }

        mLocationClient = new AMapLocationClient(getApplicationContext());
        //设置定位回调监听
        mLocationClient.setLocationListener(mLocationListener);

        //初始化AMapLocationClientOption对象
        mLocationOption = new AMapLocationClientOption();

        //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);

        //设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。
        mLocationOption.setInterval(1000);

        //设置是否返回地址信息(默认返回地址信息)
        mLocationOption.setNeedAddress(true);

        //设置是否强制刷新WIFI,默认为true,强制刷新。
        mLocationOption.setWifiActiveScan(false);

        //设置是否允许模拟位置,默认为true,允许模拟位置
        mLocationOption.setMockEnable(false);

        //单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。
        mLocationOption.setHttpTimeOut(20000);

        //关闭缓存机制
        mLocationOption.setLocationCacheEnable(false);

        //给定位客户端对象设置定位参数
        mLocationClient.setLocationOption(mLocationOption);
        //启动定位
        mLocationClient.startLocation();
    }

  

 2、高德地图知识点:

CameraUpdateFactory  //创建CameraUpdate对象,用来改变地图形态

调用AMap.animateCamera(CameraUpdate) 或AMap.moveCamera(CameraUpdate)

static CameraUpdate newLatLng(LatLng latLng)
设置地图的中心点。

CameraUpdateFactory.newLatLng(new LatLng(36.060553, 120.38329)

static CameraUpdate zoomTo(float zoom)
设置地图缩放级别。

moveCamera(CameraUpdate update)按照传入的CameraUpdate参数改变地图状态。(直接改变状态,没有动画效果)

参数:
update - 地图状态将要发生的变化

类 LatLng:存储经纬度坐标值的类,单位角度。

LatLng(double latitude, double longitude)   //latitude纬度 (垂直方向),longitude经度 (水平方向)
使用传入的经纬度构造LatLng 对象,一对经纬度值代表地球上一个地点。

 

posted @ 2016-07-13 11:25  ChHM  阅读(10399)  评论(0编辑  收藏  举报