Лучшим дополнением, вероятно, будет использование функции Mapbox от источников / слоев.
Источник (и) содержат ваши точки данных, где в качестве слоев вы можете думать об этом как о таблице стилей для HTML. Он содержит информацию о том, как будут выглядеть точки данных.
Для создания слоя у вас есть разные варианты в зависимости от того, как вы хотите, чтобы маркеры выглядели. Если вы хотите показать свою собственную иконку, вы должны использовать SymbolLayer, но их гораздо больше (CircleLayer для отображения точек / окружностей, ...)
Для создания источника используйте что-то вроде следующего
style.addLayer(
new SymbolLayer(YOUR_LAYER_ID_STRING, YOUR_SOURCE_ID_STRING)
.withProperties(
// here you can define things like the icon
// icon color
// icon size
// ... many more. Have a look at the Property class
)
);
Вы также можете стилизовать свои предметы на основе значений ваших предметов. Это называется стилевым управлением в Mapbox. Смотрите мой другой ответ, чтобы, возможно, получить немного больше понимания.
Для создания источника используйте что-то вроде следующего
ArrayList<Feature> features = new ArrayList<>();
Iterate over your CSV items {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("subject_key", item.subjectValue);
jsonObject.addProperty("report_key", item.reportByValue);
features.add(Feature.fromGeometry(Point.fromLngLat(item.getLat(), item.getLon()), jsonObject);
}
FeatureCollection featureCollection = FeatureCollection.fromFeatures(features);
style.addSource(new GeoJsonSource(YOUR_SOURCE_ID_STRING, featureCollection, new GeoJsonOptions()));
Кроме того, у вас могут быть прослушиватели кликов, чтобы ловить щелчки по маркерам (https://docs.mapbox.com/android/maps/examples/click-on-a-single-layer/).