package com.mapbox.mapboxsdk.maps; import android.graphics.RectF; import android.support.annotation.NonNull; import android.support.v4.util.LongSparseArray; import com.mapbox.mapboxsdk.annotations.Annotation; import java.util.ArrayList; import java.util.List; class ShapeAnnotationContainer implements ShapeAnnotations { private final NativeMapView nativeMapView; private final LongSparseArray annotations; ShapeAnnotationContainer(NativeMapView nativeMapView, LongSparseArray annotations) { this.nativeMapView = nativeMapView; this.annotations = annotations; } @NonNull @Override public List obtainAllIn(@NonNull RectF rectangle) { RectF rect = nativeMapView.getDensityDependantRectangle(rectangle); long[] annotationIds = nativeMapView.queryShapeAnnotations(rect); return getAnnotationsFromIds(annotationIds); } @NonNull private List getAnnotationsFromIds(long[] annotationIds) { List shapeAnnotations = new ArrayList<>(); for (long annotationId : annotationIds) { Annotation annotation = annotations.get(annotationId); if (annotation != null) { shapeAnnotations.add(annotation); } } return shapeAnnotations; } }