Динамическое создание/загрузка стиля для карт Google

#android #google-maps

Вопрос:

Для Google Карт для Android у меня есть файл JSON в формате RAW со стилем карты.

Могу ли я динамически загружать JSON во время работы приложения и использовать его?

 mMap = googleMap
mMap.setMapStyle(
    MapStyleOptions.loadRawResourceStyle(
        this, R.raw.mapstyle1
    )
)
 

Я не могу динамически создавать необработанный файл

Но я также не могу заменить файл JSON, потому что настройки получают стиль только через resourceId в RAW

Есть ли способ сделать это?

Ответ №1:

Используйте общедоступный конструктор MapStyleOptions(String json) вместо метода fabric loadRawResourceStyle(Context clientContext, int resourceId) . Что-то вроде того:

 ...
StringBuilder mapStyleStringBuilder = new StringBuilder();

// create you map style JSON
mapStyleStringBuilder.append("[");
mapStyleStringBuilder.append(" { "featureType": "all", "elementType": "geometry", "stylers": [ { "color": "#242f3e" } ] },");
mapStyleStringBuilder.append("]");

// convert it to String
String dynamicallyCreatedStyleJson =  mapStyleStringBuilder.toString()

// and apply to map
mMap.setMapStyle(new MapStyleOptions(dynamicallyCreatedStyleJson));
...