使用此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有关
答案 0 :(得分:2)
似乎是其预期行为。来自http://mesonbuild.com/Tutorial.html#adding-dependencies:
样式仅适用于
normal
地图类型。
典型路线图。显示道路,人为建造的某些功能以及 重要的自然景观,如河流。道路和要素标签为 也可见。