Search in sources :

Example 1 with Polyline

use of com.amap.api.maps.model.Polyline in project uav_mobile_app by jiushuokj.

the class MainActivity method startRecordingTrace.

private void startRecordingTrace() {
    if (makeTraceDisposable != null && !makeTraceDisposable.isDisposed()) {
        return;
    }
    Log.i(TAG, "startRecordingTrace: " + "开始记录航线");
    makeTraceDisposable = Observable.interval(500, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Long>() {

        @Override
        public void accept(Long aLong) throws Exception {
            if (!DoubleComparer.considerEqual(droneLocationLatForTrace, mFlightController.getState().getAircraftLocation().getLatitude(), DELTA) || !DoubleComparer.considerEqual(droneLocationLngForTrace, mFlightController.getState().getAircraftLocation().getLongitude(), DELTA)) {
                // 坐标转换
                // final LatLng oldLatlng = new LatLng(droneLocationLatForTrace, droneLocationLngForTrace);
                final LatLng oldLatlng = CoordinateTransUtils.getGDLatLng(droneLocationLatForTrace, droneLocationLngForTrace);
                droneLocationLatForTrace = mFlightController.getState().getAircraftLocation().getLatitude();
                droneLocationLngForTrace = mFlightController.getState().getAircraftLocation().getLongitude();
                // 坐标转换
                // final LatLng newLatlng = new LatLng(droneLocationLatForTrace, droneLocationLngForTrace);
                final LatLng newLatlng = CoordinateTransUtils.getGDLatLng(droneLocationLatForTrace, droneLocationLngForTrace);
                Polyline polyline = aMap.addPolyline(new PolylineOptions().addAll(Arrays.asList(oldLatlng, newLatlng)).width(4).color(Color.argb(255, 255, 1, 1)));
                mTracePolylines.put(mTracePolylines.size(), polyline);
                Log.d(TAG, "startRecordingTrace: " + mTracePolylines.size() + "次轨迹");
            }
        }
    });
}
Also used : Consumer(dji.thirdparty.io.reactivex.functions.Consumer) Polyline(com.amap.api.maps.model.Polyline) LatLng(com.amap.api.maps.model.LatLng) PolylineOptions(com.amap.api.maps.model.PolylineOptions)

Example 2 with Polyline

use of com.amap.api.maps.model.Polyline in project uav_mobile_app by jiushuokj.

the class MainActivity method markWaypoint.

private void markWaypoint(final LatLng point) {
    // Create MarkerOptions object
    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(point);
    markerOptions.draggable(true);
    markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
    Marker marker = aMap.addMarker(markerOptions);
    // 画线
    List<LatLng> latLngs = new ArrayList<LatLng>();
    if (mMarkers.size() == 0) {
        LatLng homeLatLng = getHomeLatLng();
        Log.i(TAG, "home坐标:" + homeLatLng.latitude + "---" + homeLatLng.longitude);
        latLngs.add(homeLatLng);
    } else {
        latLngs.add(mMarkers.get(mMarkers.size() - 1).getPosition());
    }
    latLngs.add(marker.getPosition());
    for (LatLng latLng : latLngs) {
        Log.i(TAG, "画线坐标: " + latLng);
    }
    Polyline polyline = aMap.addPolyline((new PolylineOptions()).add(latLngs.get(0), latLngs.get(1)).width(5).setDottedLine(// 虚线
    true).color(Color.BLUE));
    mMarkers.put(mMarkers.size(), marker);
    mPolylines.put(mPolylines.size(), polyline);
    setSelectedMarker(marker);
}
Also used : MarkerOptions(com.amap.api.maps.model.MarkerOptions) ArrayList(java.util.ArrayList) Polyline(com.amap.api.maps.model.Polyline) Marker(com.amap.api.maps.model.Marker) LatLng(com.amap.api.maps.model.LatLng) PolylineOptions(com.amap.api.maps.model.PolylineOptions)

Example 3 with Polyline

use of com.amap.api.maps.model.Polyline in project uav_mobile_app by jiushuokj.

the class MainActivity method initMap.

private void initMap(Bundle savedInstanceState) {
    // 获取地图控件引用
    aMapView = (MapView) findViewById(R.id.main_left_bottom_map);
    // 在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
    aMapView.onCreate(savedInstanceState);
    aMapView.setOnClickListener(this);
    if (aMap == null) {
        aMap = aMapView.getMap();
        // add the listener for click for amap object
        aMap.setOnMapClickListener(this);
    }
    // 初始化定位蓝点样式类myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。
    MyLocationStyle myLocationStyle = new MyLocationStyle();
    myLocationStyle.strokeWidth(0);
    myLocationStyle.showMyLocation(true);
    // 连续定位、蓝点不会移动到地图中心点,并且蓝点会跟随设备移动。
    myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_FOLLOW_NO_CENTER);
    // 设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
    myLocationStyle.interval(2000);
    // myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.drawable.pad));
    // 设置定位蓝点的Style
    aMap.setMyLocationStyle(myLocationStyle);
    // 设置默认定位按钮是否显示,非必需设置。
    aMap.getUiSettings().setMyLocationButtonEnabled(true);
    // 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。
    aMap.setMyLocationEnabled(true);
    aMap.moveCamera(CameraUpdateFactory.zoomTo(18));
    // 默认使用卫星图
    aMap.setMapType(AMap.MAP_TYPE_SATELLITE);
    // 绑定 Marker 被点击事件
    aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {

        // marker 对象被点击时回调的接口
        // 返回 true 则表示接口已响应事件,否则返回false
        @Override
        public boolean onMarkerClick(Marker marker) {
            if (getKey(mMarkers, marker) >= 0) {
                setResultToToast("第" + getKey(mMarkers, marker) + "坐标" + marker.getPosition());
                setSelectedMarker(marker);
                return true;
            }
            return false;
        }
    });
    // 绑定marker拖拽事件
    aMap.setOnMarkerDragListener(new AMap.OnMarkerDragListener() {

        @Override
        public void onMarkerDragStart(Marker arg0) {
            setResultToToast("开始拖动:" + "第" + getKey(mMarkers, arg0) + "坐标");
        }

        @Override
        public void onMarkerDragEnd(Marker arg0) {
            setResultToToast("结束拖动:" + "第" + getKey(mMarkers, arg0) + "坐标");
            Integer index = getKey(mMarkers, arg0);
            if (index < 0) {
                return;
            }
            Log.i(TAG, "onMarkerDrag: ---" + index + "---" + arg0.getPosition());
            // 以该标记作为终点的线
            Polyline oldPolyline1 = mPolylines.get(index);
            Polyline newPolyline1 = aMap.addPolyline((new PolylineOptions()).add(oldPolyline1.getPoints().get(0), arg0.getPosition()).width(5).setDottedLine(// 虚线
            true).color(Color.BLUE));
            mPolylines.put(index, newPolyline1);
            oldPolyline1.remove();
            // 以该标记作为起点的线
            Polyline oldPolyline2 = mPolylines.get(index + 1);
            Polyline newPolyline2 = aMap.addPolyline((new PolylineOptions()).add(arg0.getPosition(), oldPolyline2.getPoints().get(1)).width(5).setDottedLine(// 虚线
            true).color(Color.BLUE));
            mPolylines.put(index + 1, newPolyline2);
            oldPolyline2.remove();
        }

        @Override
        public void onMarkerDrag(Marker arg0) {
        }
    });
    // 显示指南针
    aMap.getUiSettings().setCompassEnabled(true);
    // 显示比例尺
    aMap.getUiSettings().setScaleControlsEnabled(true);
    setHomeMarker();
    updateDroneLocation();
    cameraUpdate();
}
Also used : MyLocationStyle(com.amap.api.maps.model.MyLocationStyle) AMap(com.amap.api.maps.AMap) Polyline(com.amap.api.maps.model.Polyline) Marker(com.amap.api.maps.model.Marker) PolylineOptions(com.amap.api.maps.model.PolylineOptions)

Example 4 with Polyline

use of com.amap.api.maps.model.Polyline in project uav_mobile_app by jiushuokj.

the class MainActivity method deleteSelectedMarker.

/**
 * 删除地图上当前选定的标记
 * 1.mMarkers中删除该点,地图上删除点,并且在mMarkers中将其后面的点往前移动
 * 2.mPolyLines中删除该点有关的两条线,地图也删除,并且将其前后两点相连
 * 3.选中改点的下一点为当前标记
 */
private void deleteSelectedMarker() {
    if (selectedMarker == null) {
        setResultToToast("当前没有选中标记");
        return;
    }
    if (mMarkers.size() == 0) {
        setResultToToast("当前地图上没有标记");
        return;
    }
    final Integer selectedIndex = getKey(mMarkers, selectedMarker);
    if (selectedIndex < 0) {
        setResultToToast("选中的标记不在mMarker中");
        return;
    }
    selectedMarker.remove();
    for (int i = selectedIndex; i < mMarkers.size() - 1; i++) {
        mMarkers.put(i, mMarkers.get(i + 1));
    }
    mMarkers.remove(mMarkers.size() - 1);
    if (mPolylines.size() == 0) {
        setResultToToast("当前地图上没有连线");
    } else if (mPolylines.size() == 1) {
        // 只有一个点
        for (Integer integer : mPolylines.keySet()) {
            mPolylines.get(integer).remove();
            mPolylines.remove(integer);
        }
    } else if (selectedIndex == mPolylines.size() - 1) {
        // 最后一个点
        mPolylines.get(selectedIndex).remove();
        mPolylines.remove(selectedIndex);
        setSelectedMarker(mMarkers.get(selectedIndex - 1));
    } else {
        LatLng homeLatLng = getHomeLatLng();
        Polyline newPolyline = aMap.addPolyline((new PolylineOptions()).add(selectedIndex == 0 ? homeLatLng : mMarkers.get(selectedIndex - 1).getPosition(), mMarkers.get(selectedIndex).getPosition()).width(5).setDottedLine(// 虚线
        true).color(Color.BLUE));
        Polyline selectedPolyline = mPolylines.get(selectedIndex);
        selectedPolyline.remove();
        Polyline nextSelectedPolyline = mPolylines.get(selectedIndex + 1);
        nextSelectedPolyline.remove();
        mPolylines.put(selectedIndex, newPolyline);
        for (int i = selectedIndex + 1; i < mPolylines.size() - 1; i++) {
            mPolylines.put(i, mPolylines.get(i + 1));
        }
        mPolylines.remove(mPolylines.size() - 1);
        setSelectedMarker(mMarkers.get(selectedIndex));
    }
    for (Integer integer : mMarkers.keySet()) {
        Log.i(TAG, "deleteSelectedMarker: 第" + integer + "个标记" + mMarkers.get(integer).getPosition());
    }
    for (Integer integer : mPolylines.keySet()) {
        Log.i(TAG, "deleteSelectedMarker: 第" + integer + "条线" + mPolylines.get(integer).getPoints());
    }
}
Also used : Polyline(com.amap.api.maps.model.Polyline) LatLng(com.amap.api.maps.model.LatLng) WayPoint(com.jiushuo.uavRct.entity.sqlite.WayPoint) SuppressLint(android.annotation.SuppressLint) Waypoint(dji.common.mission.waypoint.Waypoint) PolylineOptions(com.amap.api.maps.model.PolylineOptions)

Aggregations

Polyline (com.amap.api.maps.model.Polyline)4 PolylineOptions (com.amap.api.maps.model.PolylineOptions)4 LatLng (com.amap.api.maps.model.LatLng)3 Marker (com.amap.api.maps.model.Marker)2 SuppressLint (android.annotation.SuppressLint)1 AMap (com.amap.api.maps.AMap)1 MarkerOptions (com.amap.api.maps.model.MarkerOptions)1 MyLocationStyle (com.amap.api.maps.model.MyLocationStyle)1 WayPoint (com.jiushuo.uavRct.entity.sqlite.WayPoint)1 Waypoint (dji.common.mission.waypoint.Waypoint)1 Consumer (dji.thirdparty.io.reactivex.functions.Consumer)1 ArrayList (java.util.ArrayList)1