高德地图Android,绘制自定义定位蓝点、marker、面

在这里插入图片描述


public class LineUpActivity extends BaseActivity implements LocationSource {

    @BindView(R.id.line_up_map)
    MapView mapView;

    private AMap aMap;
    private UiSettings uiSettings;
    private AMapLocationClient aMapLocationClient;
    private AMapLocationClientOption aMapLocationClientOption;
    private OnLocationChangedListener locationChangedListener;

    private AppDialog dialog;

    @Override
    protected int getLayout() {
        return R.layout.activity_line_up;
    }

    @Override
    protected void initView() {
        initMap();
    }

    private void initMap() {
        if (aMap == null) {
            aMap = mapView.getMap();
        }
        uiSettings = aMap.getUiSettings();
        uiSettings.setZoomControlsEnabled(false);
        aMap.setMyLocationEnabled(true);

        aMapLocationClient = new AMapLocationClient(this);
        aMapLocationClient.setLocationListener(aMapLocation -> {
            Log.d("map","myLocation:lat="+aMapLocation.getLatitude()+",lon="+aMapLocation.getLongitude()+",zoomLevel="+aMap.getMaxZoomLevel());

            if (locationChangedListener == null || aMapLocation == null) {
                return;
            }

            if (aMapLocation.getErrorCode() == AMapLocation.LOCATION_SUCCESS) {
                locationChangedListener.onLocationChanged(aMapLocation);
            }
        });
        
        aMapLocationClientOption = new AMapLocationClientOption();
        aMapLocationClientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        aMapLocationClientOption.setInterval(5000);
        aMapLocationClient.setLocationOption(aMapLocationClientOption);
        //显示定位标记
        MyLocationStyle myLocationStyle = new MyLocationStyle();
        Bitmap iconBitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_my_location);
        myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromBitmap(iconBitmap));
        //透明定位精度圆圈
        myLocationStyle.strokeWidth(0);
        myLocationStyle.strokeColor(Color.TRANSPARENT);
        myLocationStyle.radiusFillColor(Color.TRANSPARENT);
        //定位间隔
        myLocationStyle.interval(5000);
        //连续定位、蓝点不会移动到地图中心点,定位点依照设备方向旋转,并且蓝点会跟随设备移动。
        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER);
        aMap.setMyLocationStyle(myLocationStyle);
        aMapLocationClient.startLocation();

        //位置
        LatLng latLng = new LatLng(38.438,106.215);

        //地图view中心点和缩放级别设置
        aMap.moveCamera(CameraUpdateFactory.changeLatLng(latLng));
        aMap.moveCamera(CameraUpdateFactory.zoomTo(aMap.getMaxZoomLevel()-3));
        //添加marker
        MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.position(latLng);
        Bitmap companyIcon = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_company);
        markerOptions.icon(BitmapDescriptorFactory.fromBitmap(companyIcon));
        //设置marker锚点偏移量
        markerOptions.anchor(0.5f,0.5f);
        aMap.addMarker(markerOptions);
        //添加圆形面范围标识
        CircleOptions circleOptions = new CircleOptions();
        circleOptions.center(latLng);
        circleOptions.strokeWidth(0);
        circleOptions.fillColor(getResources().getColor(R.color.light_blue));
        circleOptions.radius(200);
        aMap.addCircle(circleOptions);

    }


    @Override
    public void activate(OnLocationChangedListener onLocationChangedListener) {
        locationChangedListener = onLocationChangedListener;
    }

    @Override
    public void deactivate() {
        locationChangedListener = null;
        if (aMapLocationClient != null) {
            aMapLocationClient.stopLocation();
            aMapLocationClient.onDestroy();
        }
        aMapLocationClient = null;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mapView.onCreate(savedInstanceState);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mapView.onPause();
        deactivate();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mapView.onDestroy();
        if (aMapLocationClient != null) {
            aMapLocationClient.onDestroy();
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
        mapView.onSaveInstanceState(outState);
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值