use of com.mapbox.mapboxsdk.plugins.annotation.Symbol in project mapbox-plugins-android by mapbox.
the class SymbolActivity method onOptionsItemSelected.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.menu_action_draggable) {
for (int i = 0; i < symbolManager.getAnnotations().size(); i++) {
Symbol symbol = symbolManager.getAnnotations().get(i);
symbol.setDraggable(!symbol.isDraggable());
}
} else if (item.getItemId() == R.id.menu_action_filter) {
Expression expression = eq(toNumber(get("id")), symbol.getId());
Expression filter = symbolManager.getFilter();
if (filter != null && filter.equals(expression)) {
symbolManager.setFilter(not(eq(toNumber(get("id")), -1)));
} else {
symbolManager.setFilter(expression);
}
} else if (item.getItemId() == R.id.menu_action_icon) {
symbol.setIconImage(MAKI_ICON_CAFE);
} else if (item.getItemId() == R.id.menu_action_rotation) {
symbol.setIconRotate(45.0f);
} else if (item.getItemId() == R.id.menu_action_text) {
symbol.setTextField("Hello world!");
} else if (item.getItemId() == R.id.menu_action_anchor) {
symbol.setIconAnchor(Property.ICON_ANCHOR_BOTTOM);
} else if (item.getItemId() == R.id.menu_action_opacity) {
symbol.setIconOpacity(0.5f);
} else if (item.getItemId() == R.id.menu_action_offset) {
symbol.setIconOffset(new PointF(10.0f, 20.0f));
} else if (item.getItemId() == R.id.menu_action_text_anchor) {
symbol.setTextAnchor(Property.TEXT_ANCHOR_TOP);
} else if (item.getItemId() == R.id.menu_action_text_color) {
symbol.setTextColor(Color.WHITE);
} else if (item.getItemId() == R.id.menu_action_text_size) {
symbol.setTextSize(22f);
} else if (item.getItemId() == R.id.menu_action_z_index) {
symbol.setSymbolSortKey(0.0f);
} else if (item.getItemId() == R.id.menu_action_halo) {
symbol.setIconHaloWidth(5.0f);
symbol.setIconHaloColor(Color.RED);
symbol.setIconHaloBlur(1.0f);
} else if (item.getItemId() == R.id.menu_action_animate) {
resetSymbol();
easeSymbol(symbol, new LatLng(6.687337, 0.381457), 180);
return true;
} else {
return super.onOptionsItemSelected(item);
}
symbolManager.update(symbol);
return true;
}
use of com.mapbox.mapboxsdk.plugins.annotation.Symbol in project mapbox-plugins-android by mapbox.
the class SymbolActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_annotation);
TextView draggableInfoTv = findViewById(R.id.draggable_position_tv);
mapView = findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(mapboxMap -> mapboxMap.setStyle(Style.LIGHT, style -> {
findViewById(R.id.fabStyles).setOnClickListener(v -> {
mapboxMap.setStyle(Utils.INSTANCE.getNextStyle());
mapboxMap.getStyle(this::addAirplaneImageToStyle);
});
mapboxMap.moveCamera(CameraUpdateFactory.zoomTo(2));
addAirplaneImageToStyle(style);
// create symbol manager
GeoJsonOptions geoJsonOptions = new GeoJsonOptions().withTolerance(0.4f);
symbolManager = new SymbolManager(mapView, mapboxMap, style, null, geoJsonOptions);
symbolManager.addClickListener(symbol -> {
Toast.makeText(SymbolActivity.this, String.format("Symbol clicked %s", symbol.getId()), Toast.LENGTH_SHORT).show();
return false;
});
symbolManager.addLongClickListener(symbol -> {
Toast.makeText(SymbolActivity.this, String.format("Symbol long clicked %s", symbol.getId()), Toast.LENGTH_SHORT).show();
return false;
});
// set non data driven properties
symbolManager.setIconAllowOverlap(true);
symbolManager.setTextAllowOverlap(true);
// create a symbol
SymbolOptions symbolOptions = new SymbolOptions().withLatLng(new LatLng(6.687337, 0.381457)).withIconImage(ID_ICON_AIRPORT).withIconSize(1.3f).withSymbolSortKey(10.0f).withDraggable(true);
symbol = symbolManager.create(symbolOptions);
Timber.e(symbol.toString());
// create nearby symbols
SymbolOptions nearbyOptions = new SymbolOptions().withLatLng(new LatLng(6.626384, 0.367099)).withIconImage(MAKI_ICON_CIRCLE).withIconColor(ColorUtils.colorToRgbaString(Color.YELLOW)).withIconSize(2.5f).withSymbolSortKey(5.0f).withDraggable(true);
symbolManager.create(nearbyOptions);
// random add symbols across the globe
List<SymbolOptions> symbolOptionsList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
symbolOptionsList.add(new SymbolOptions().withLatLng(createRandomLatLng()).withIconImage(MAKI_ICON_CAR).withDraggable(true));
}
symbolManager.create(symbolOptionsList);
try {
symbolManager.create(FeatureCollection.fromJson(Utils.INSTANCE.loadStringFromAssets(this, "annotations.json")));
} catch (IOException e) {
throw new RuntimeException("Unable to parse annotations.json");
}
symbolManager.addDragListener(new OnSymbolDragListener() {
@Override
public void onAnnotationDragStarted(Symbol annotation) {
draggableInfoTv.setVisibility(View.VISIBLE);
}
@Override
public void onAnnotationDrag(Symbol annotation) {
draggableInfoTv.setText(String.format(Locale.US, "ID: %s\nLatLng:%f, %f", annotation.getId(), annotation.getLatLng().getLatitude(), annotation.getLatLng().getLongitude()));
}
@Override
public void onAnnotationDragFinished(Symbol annotation) {
draggableInfoTv.setVisibility(View.GONE);
}
});
}));
}
use of com.mapbox.mapboxsdk.plugins.annotation.Symbol in project maps by rnmapbox.
the class RCTMGLMapView method createSymbolManager.
public void createSymbolManager(Style style) {
symbolManager = new SymbolManager(this, mMap, style);
symbolManager.setIconAllowOverlap(true);
symbolManager.addClickListener(SymbolClickListenerImpl.annotationClickListener(new SymbolClickListenerImpl.Listener() {
@Override
public boolean onAnnotationClick(Symbol symbol) {
onMarkerClick(symbol);
return true;
}
}));
symbolManager.addDragListener(new OnSymbolDragListener() {
@Override
public void onAnnotationDragStarted(Symbol symbol) {
mAnnotationClicked = true;
final long selectedMarkerID = symbol.getId();
RCTMGLPointAnnotation annotation = getPointAnnotationByMarkerID(selectedMarkerID);
if (annotation != null) {
annotation.onDragStart();
}
}
@Override
public void onAnnotationDrag(Symbol symbol) {
final long selectedMarkerID = symbol.getId();
RCTMGLPointAnnotation annotation = getPointAnnotationByMarkerID(selectedMarkerID);
if (annotation != null) {
annotation.onDrag();
}
}
@Override
public void onAnnotationDragFinished(Symbol symbol) {
mAnnotationClicked = false;
final long selectedMarkerID = symbol.getId();
RCTMGLPointAnnotation annotation = getPointAnnotationByMarkerID(selectedMarkerID);
if (annotation != null) {
annotation.onDragEnd();
}
}
});
mMap.addOnMapClickListener(this);
mMap.addOnMapLongClickListener(this);
}
Aggregations