我有一个带有符号的地图,我使用以下代码进行介绍:
symbolOptions = SymbolOptions()
.withLatLng(LatLng(localImageObject.locationLat, localImageObject.locationLong))
.withIconImage(DERE_PIN)
.withIconSize(1.3f)
.withZIndex(10)
.withDraggable(true)
symbolManager.create(symbolOptions)
因此,目前我的地图上有一个符号。我希望这样,以便当用户长按地图或单击时,该符号会更改其位置,而不是创建新地图。我该怎么办?
答案 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))
}