HERE-SDK lite 在 MapView 中拖动标记

HERE-SDK lite drag marker in MapView

我正在试用 SDK Lite API,我想知道如何实现将 MapMarker 对象从一个地方拖到另一个地方。我建议,它可以通过禁用默认的 onPan 手势以某种方式工作,但实际上问题始于选择现有对象。

到目前为止,这是我的代码:

public void pickMarker(Point2D p) {
    map.getGestures().disableDefaultAction(GestureType.PAN);
    map.pickMapItems(p, 20f, pickMapItemsResult -> {
        if (pickMapItemsResult != null) {
            pickedMarker = pickMapItemsResult.getTopmostMarker();
        } else {
            map.getGestures().enableDefaultAction(GestureType.PAN);
        }
    });
}

public void dragMarker(Point2D p) {
    if (pickedMarker != null) {
        pickedMarker.setCoordinates(map.getCamera().viewToGeoCoordinates(p));
    }
}

public boolean releaseMarker(Point2D p) {

    map.getGestures().enableDefaultAction(GestureType.PAN);
    if (pickedMarker != null) {
        GeoCoordinates newCoordinates = map.getCamera().viewToGeoCoordinates(p);
        pickedMarker.setCoordinates(newCoordinates);
        pickedMarker = null;
        return true;
    }
    return false;
}

同时在 onPanListener 的三种状态下调用这些函数:

mapView.getGestures().setPanListener((gestureState, point2D, point2DUpdate, v) -> {
        if (gestureState.equals(GestureState.BEGIN)) {
            mapViewUIEngine.pickMarker(point2D);
        }
        if (gestureState.equals(GestureState.UPDATE)) {
            mapViewUIEngine.dragMarker(point2DUpdate);
        }
        if (gestureState.equals(GestureState.END)) {
            if (mapViewUIEngine.releaseMarker(point2DUpdate)) {
                regionController.movePoint(0,
                        updateNewLocation(point2D, point2DUpdate);
            }
        }
    });

来自 Github 中的一位开发人员 我现在知道,返回的是多边形而不是标记(它位于多边形线上,但我怎样才能得到标记?

您可以使用地图标记精确指向地图上的某个位置。

以下方法将向地图添加自定义地图标记:

MapImage mapImage = MapImageFactory.fromResource(context.getResources(), R.drawable.here_car);

MapMarker mapMarker = new MapMarker(geoCoordinates);
mapMarker.addImage(mapImage, new MapMarkerImageStyle());

mapView.getMapScene().addMapMarker(mapMarker);

详情请参考

https://developer.here.com/documentation/android-sdk/dev_guide/topics/map-items.html#add-map-markers