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

时间:2019-04-17 05:03:38

标签: android maps mapbox mapbox-android mapbox-marker

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

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

symbolManager.create(symbolOptions)

因此,目前我的地图上有一个符号。我希望这样,以便当用户长按地图或单击时,该符号会更改其位置,而不是创建新地图。我该怎么办?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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))
    }