1

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

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

symbolManager.create(symbolOptions)

所以目前我的地图上有一个符号。我希望这样当用户长按地图或点击时,符号会改变它的位置,而不是创建一个新的。我怎样才能做到这一点?

4

2 回答 2

4

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

val symbol = symbolManager.create(symbolOptions);
symbol.setGeometry(Point.fromLngLat(lonValue, latValue));
于 2019-04-17T05:51:23.610 回答
0

使用 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))
    }
于 2019-09-25T08:20:58.437 回答