Android 当用户点击地图时,如何更改地图框符号的位置?

Android 当用户点击地图时,如何更改地图框符号的位置?,android,maps,mapbox,mapbox-android,mapbox-marker,Android,Maps,Mapbox,Mapbox Android,Mapbox Marker,我有一个带有符号的地图,我使用以下代码介绍: symbolOptions = SymbolOptions() .withLatLng(LatLng(localImageObject.locationLat, localImageObject.locationLong)) .withIconImage(DERE_PIN) .withIconSize(1.3f) .with

我有一个带有符号的地图,我使用以下代码介绍:

symbolOptions = SymbolOptions()
                .withLatLng(LatLng(localImageObject.locationLat, localImageObject.locationLong))
                .withIconImage(DERE_PIN)
                .withIconSize(1.3f)
                .withZIndex(10)
                .withDraggable(true)

symbolManager.create(symbolOptions)

所以现在我的地图上有一个符号。我希望这样,当用户长按地图或单击时,符号将更改其位置,而不是创建新的位置。如何执行此操作?

注释的选项类仅用于初始化。调用create时返回实际注释。这是您以后可以用来更新位置的对象:

val symbol = symbolManager.create(symbolOptions);
symbol.setGeometry(Point.fromLngLat(lonValue, latValue));

注释的选项类仅用于初始化。调用create时返回实际注释。这是您以后可以用来更新位置的对象:

val symbol = symbolManager.create(symbolOptions);
symbol.setGeometry(Point.fromLngLat(lonValue, latValue));

使用MapboxMap.OnMapClickListener接口,在地图上添加新符号之前,实现onMapClick方法删除符号

private SymbolManager symbolManager;
private List<Symbol> symbols //init

    @Override
    public boolean onMapClick(@NonNull LatLng point) {
        if(!symbols.isEmpty()) {
            symbolManager.delete(symbols);
            symbols.clear();
        }
        if(symbolManager == null) {
            symbolManager = new SymbolManager(mapView, map, map.getStyle());
        }

        symbolOptions = SymbolOptions()
                .withLatLng(LatLng(localImageObject.locationLat, 
        localImageObject.locationLong))
                .withIconImage(DERE_PIN)
                .withIconSize(1.3f)
                .withZIndex(10)
                .withDraggable(true)

        symbols.add(symbolManager.create(symbolOptions))
    }

使用MapboxMap.OnMapClickListener接口,在地图上添加新符号之前,实现onMapClick方法删除符号

private SymbolManager symbolManager;
private List<Symbol> symbols //init

    @Override
    public boolean onMapClick(@NonNull LatLng point) {
        if(!symbols.isEmpty()) {
            symbolManager.delete(symbols);
            symbols.clear();
        }
        if(symbolManager == null) {
            symbolManager = new SymbolManager(mapView, map, map.getStyle());
        }

        symbolOptions = SymbolOptions()
                .withLatLng(LatLng(localImageObject.locationLat, 
        localImageObject.locationLong))
                .withIconImage(DERE_PIN)
                .withIconSize(1.3f)
                .withZIndex(10)
                .withDraggable(true)

        symbols.add(symbolManager.create(symbolOptions))
    }

不为我工作。不为我工作。谢谢你救了我一天!!谢谢你救了我一天!!