zoukankan      html  css  js  c++  java
  • 高德地图 定位等

    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 对象,一对经纬度值代表地球上一个地点。

  • 相关阅读:
    bzoj 1051: [HAOI2006]受欢迎的牛
    bzoj 1192: [HNOI2006]鬼谷子的钱袋
    一些动规水题
    USACO 2014 Open Silver Fairphoto
    USACO 2013 Nov Silver Pogo-Cow
    09day1
    09day2
    08day2
    08day1
    07day2
  • 原文地址:https://www.cnblogs.com/chhom/p/5666240.html
Copyright © 2011-2022 走看看