google mapView стиль не работает на Android с maptype = TERRAIN - PullRequest
0 голосов
/ 17 декабря 2018

Используя этот вопрос stackoverflow , я попытался применить некоторые пользовательские стили к представлению карты Android.

Стиль, по сути, просто делает воду черной

mapstyle_json.js:

[
    {
        featureType: 'water',
        elementType: 'geometry',
        stylers: [{color: '#000000'}]
      },
      {
        featureType: 'water',
        elementType: 'labels.text.fill',
        stylers: [{color: '#515c6d'}]
      },
      {
        featureType: 'water',
        elementType: 'labels.text.stroke',
        stylers: [{color: '#17263c'}]
      }
]

Моя основная деятельность:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final MapView mapView = (MapView) findViewById(R.id.mapView);
        final android.content.Context context = this;

        mapView.onCreate(savedInstanceState);
        mapView.getMapAsync(new OnMapReadyCallback() {

            @Override
            public void onMapReady(GoogleMap googleMap) {
                googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN); // Without this line, the styling works as intended
                try {
                    // Customise the styling of the base map using a JSON object defined
                    // in a raw resource file.
                    boolean success = googleMap.setMapStyle(
                            MapStyleOptions.loadRawResourceStyle(
                                    context, R.raw.mapstyle_json));

                    if (!success) {
                        Log.e("1", "Style parsing failed.");
                    }
                } catch (Resources.NotFoundException e) {
                    Log.e("1", "Can't find style. Error: ", e);
                }
                Log.d("1", "onMapReady: something");
                LatLng coordinates = new LatLng(45.832119, 6.865575);
                googleMap.addMarker(new MarkerOptions().position(coordinates).title("hello"));
                googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(coordinates, 12));
                mapView.onResume();
            }
        });
    } 
}

Без настройкиТип карты (с использованием типа карты по умолчанию), стилизация работает как надо.Должна быть возможность стилизовать карту типов TERRAIN, учитывая связанный вопрос.(Возможно только с javascript).

Почему этот стиль не применяется к карте типов местности?Возможно ли это в Android mapView?

РЕДАКТИРОВАТЬ:

Код основан на собственном руководстве Google, с использованием исходного кода ресурса: https://developers.google.com/maps/documentation/android-sdk/styling

Может быть, этоGoogle API v2 vs v3 проблема.Насколько я понимаю, Android использует API v2.Проблема связана с v3

1 Ответ

0 голосов
/ 18 декабря 2018

Кажется, его ожидаемое поведение.От Официальная документация :

Стилизация работает только для карты normal.

Тип карты нормалей :

Типичная дорожная карта.Показывает дороги, некоторые объекты, созданные людьми, и важные природные объекты, такие как реки.Ярлыки дорог и объектов также видны.

...