google mapView样式在使用maptype = TERRAIN

时间:2018-12-17 18:08:30

标签: android google-maps android-mapview styling android-maps-v2

使用此stackoverflow question,我尝试将一些自定义样式应用于Android mapview。

样式基本上只是使水变黑

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 :(得分:2)

似乎是其预期行为。来自http://mesonbuild.com/Tutorial.html#adding-dependencies

  

样式仅适用于normal地图类型。

Official Documentation是:

  

典型路线图。显示道路,人为建造的某些功能以及   重要的自然景观,如河流。道路和要素标签为   也可见。