Я хочу изменить и переместить свой символ с перемещением камеры с помощью метода onCameraMoveListener в Mapbox, но я не могу распознать проблемы. На карте отображается только символ с именем «ID_ICONN», а символ перемещается и меняет символ, который он не делает. т случится. а mapboxMap.addOnCameraIdleListener вообще не работает. пожалуйста, помогите мне. Я любитель андроида...
public class MainActivity extends AppCompatActivity {
private MapView mapView;
private CircleManager circleManager;
private Style style;
private SymbolManager symbolManager;
private Symbol symbol;
private static final String ID_ICON = "";
private static final String ID_ICONN = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Mapbox.getInstance(this,
"access token");
setContentView(R.layout.activity_main);
mapView = findViewById(R.id.mapMap);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(new OnMapReadyCallback() {
LatLng takestanLatLong=new LatLng(36.071636,49.695322);
@Override
public void onMapReady(@NonNull final MapboxMap mapboxMap) {
mapboxMap.setStyle(new Style.Builder().fromUri("mapbox://styles/mojtaba95/ck7i2kow65njg1irw6nb0x59s"), new Style.OnStyleLoaded() {
@Override
public void onStyleLoaded(@NonNull Style style) {
//get symbol image from drawble
style.addImage(ID_ICON, BitmapUtils.getBitmapFromDrawable(getResources().getDrawable(R.drawable.mapbox_marker_icon_default)));
style.addImage(ID_ICONN, BitmapUtils.getBitmapFromDrawable(getResources().getDrawable(R.drawable.mapbox_compass_icon)));
//initialize symbol manager
final SymbolManager symbolManager=new SymbolManager(mapView,mapboxMap,style);
symbolManager.setIconAllowOverlap(true);
symbolManager.setIconIgnorePlacement(true);
//create symbol
final Symbol symbolStart=symbolManager.create(new SymbolOptions()
.withLatLng(takestanLatLong)
.withIconImage(ID_ICON)
.withSymbolSortKey(5.0f)
.withIconSize(1.5f));
mapboxMap.addOnCameraMoveListener(new MapboxMap.OnCameraMoveListener() {
@Override
public void onCameraMove() {
//get the camera position
LatLng latlng=mapboxMap.getCameraPosition().target;
//set the symbol icon for move
symbolStart.setIconImage(ID_ICONN);
//set the camera new latlng for symbol
symbolStart.setLatLng(latlng);
}
});
mapboxMap.addOnCameraIdleListener(new MapboxMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
//set the icon when move is finished
symbolStart.setIconImage(ID_ICON);
}
});
CircleManager circleManager = new CircleManager(mapView, mapboxMap,style);
CircleOptions circleOptions = new CircleOptions()
.withLatLng(takestanLatLong)
.withCircleColor(ColorUtils.colorToRgbaString(Color.YELLOW))
.withCircleRadius(5f)
.withDraggable(true);
circleManager.create(circleOptions);
}
});
CameraPosition position= new CameraPosition.Builder()
.target(takestanLatLong)
.zoom(15)
.tilt(10)
.build();
mapboxMap.animateCamera(CameraUpdateFactory.newCameraPosition(position),6000 );
}
});
}
@Override
public void onStart() {
super.onStart();
mapView.onStart();
}
@Override
public void onResume() {
super.onResume();
mapView.onResume();
}
@Override
public void onPause() {
super.onPause();
mapView.onPause();
}
@Override
public void onStop() {
super.onStop();
mapView.onStop();
}
@Override
public void onLowMemory() {
super.onLowMemory();
mapView.onLowMemory();
}
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
}