В этом примере из документации Mapbox Android показано, как добавить локальный ресурс для рисования из приложения Android на карту Mapbox как SymbolLayer
. Вспомогательный метод initSpaceStationSymbolLayer
специально позаботится об этом:
private void initSpaceStationSymbolLayer(@NonNull Style style) {
style.addImage(
"space-station-icon-id",
BitmapFactory.decodeResource(this.getResources(), R.drawable.iss)
);
style.addSource(new GeoJsonSource("source-id"));
style.addLayer(new SymbolLayer("layer-id", "source-id").withProperties(
iconImage("space-station-icon-id"),
iconIgnorePlacement(true),
iconAllowOverlap(true),
iconSize(.7f)
));
}
Однако вы упомянули SymbolOptions
, поэтому вполне вероятно, что вы используете плагин Mapbox Annotation для Android вместо непосредственного добавления SymbolLayer
с. Как указано в документации для метода SymbolOptions#withIconImage
, изображения значков задаются как String
s, которые ссылаются на имена изображений на листе sprite вашего стиля. В этом примере из Mapbox Android Демонстрационное приложение плагинов демонстрирует, как добавить изображение из папки ресурсов в ваш стиль, чтобы затем использовать его в качестве изображения значка в SymbolManager
. А именно, ID_ICON_AIRPORT
определяется как "airport"
здесь , затем вспомогательный метод addAirplaneImageToStyle
здесь добавляет соответствующее изображение в стиль, и, наконец, создается Symbol
здесь с использованием SymbolOptions#withIconImage
и ID_ICON_AIRPORT
в качестве аргумента. Вы используете этот же подход для добавления своего собственного нарисованного изображения.