Android 高德地图定位以及自定义定位图标的显示

由于高德地图中默认的定位图标是高德地图的logo,我这边想要换一种图标,就有了新的需求。

首先先设置定位相关信息

下面代码之前确认地图控件已经被初始化。

/**     * set map info     */    private void setUpMapLocationMine() {        mAmap.setLocationSource(mLocationSource);// setting location listener        mAmap.getUiSettings().setMyLocationButtonEnabled(false);// 设置默认定位按钮是否显示 这里我这边有自定义的按钮,所以就不显示高德自带的了        mAmap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false        mAmap.setMyLocationType(AMap.MAP_TYPE_NORMAL);        // 设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);        //设置定位间隔,单位毫秒,默认为2000ms        mLocationOption.setInterval(2000);        // 获取一次定位结果: //该方法默认为false。        mLocationOption.setOnceLocation(false);        mLocationOption.setOnceLocationLatest(false);        //设置是否允许模拟位置,默认为false,不允许模拟位置        mLocationOption.setMockEnable(false);        mlocationClient.setLocationOption(mLocationOption);        mlocationClient.startLocation();        // 如果要设置定位的默认状态,可以在此处进行设置        myLocationStyle = new MyLocationStyle();        // 如果可以就将用户的图片传到这个bitmap       myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.drawable.marker_scenic_spot_mine_location_icon));        myLocationStyle.strokeColor(Color.argb(0, 0, 0, 0));// 设置圆形的边框颜色        myLocationStyle.radiusFillColor(Color.argb(0, 0, 0, 0));// 设置圆形的填充颜色        myLocationStyle.anchor(0.5f,0.576f); // 这个数值是根据我的图片显示的时候计算的,最好是0.5 0.5//        myLocationStyle.strokeColor(Color.argb(19, 73, 190, 255));// 设置圆形的边框颜色 rgba(73, 190, 255, 19)//        myLocationStyle.radiusFillColor(Color.argb(19, 73, 190, 255));// 设置圆形的填充颜色        mAmap.setMyLocationStyle(myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER)); // 类型是定位旋转当不居中显示    }

这个是显示我的位置的图标,由于我的图标有范围就不需要圆形和填充圆形的布局了 所以我设置为0.
Android 高德地图自定义定位图标的显示_第1张图片
这个箭头朝上是因为定位有旋转的功能,如果箭头不是朝上就不准确,高德那边给的方向应该默认就是朝上的,然后根据朝上来根据手机旋转来旋转角度的。
上面通过MyLocationStyle中的myLocationIcon设置定位图片就可以正常的设置了定位的图片。

上面是初始化一些定位的信息,下面是定位中用到的一些监听:

LocationSource mLocationSource = new LocationSource() {        @Override        public void activate(OnLocationChangedListener onLocationChangedListener) {            mListener = onLocationChangedListener;            if (mlocationClient == null) {                mlocationClient = new AMapLocationClient(mContext);                mLocationOption = new AMapLocationClientOption();                mlocationClient.setLocationListener(mapLocationListener);                mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);                mlocationClient.setLocationOption(mLocationOption);                mlocationClient.startLocation();            }        }        @Override        public void deactivate() {            mListener = null;            if (mlocationClient != null) {                mlocationClient.stopLocation();                mlocationClient.onDestroy();            }            mlocationClient = null;        }    };    AMapLocationListener mapLocationListener = new AMapLocationListener() {        @Override        public void onLocationChanged(AMapLocation amapLocation) { // 定位信息有变动就会调用这个方法 正常情况会每两秒调用一次,因为上面设置是两秒更新一次            if (mListener != null && amapLocation != null) {                if (amapLocation != null && amapLocation.getErrorCode() == 0) { // 定位获取位置成功                    mListener.onLocationChanged(amapLocation);// show system blue spot                } else {                  if (GPSUtils.isOPen(mContext)){                    ToastUtils.showText(mContext, "定位失败,当前GPS信号弱");                    } else {                       ToastUtils.showText(mContext, "定位失败,请打开GPS位置权限");                   }                }            }        }    };

以上就是定位需要用的全部。
高德地图小知识。共勉

更多相关文章

  1. Android开发_地图应用_百度Map-1
  2. Android Studio 调用百度地图
  3. android 百度地图开发打包注意点
  4. Google地图(Map)API在J2ME中使用方法
  5. Android 使用地图时的权限请求
  6. 2014.01.10 ——— android listview 记录和恢复位置

随机推荐

  1. android如何在非context環境訪問資源
  2. Android Stuido Ndk-Jni 开发(二):Jni中打印
  3. android internet参数传递
  4. OpenCV android sdk配置OpenCV android N
  5. Android异步处理:AsyncTask的实现原理
  6. VS2015+Android环境配置【appt.exe停止运
  7. Android 关于 Activity 之间的切换动画
  8. Android Gradle上传Maven仓库
  9. android一些东东
  10. Android UC浏览器使用痕迹分析