Android 自定义Google地图样式

示例

映射样式

Google Maps使用以下代码提供了一系列不同的样式:

// Sets the map type to be "hybrid"
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);


不同的映射样式是:

正常

map.setMapType(GoogleMap.MAP_TYPE_NORMAL);

典型路线图。显示了道路,一些人造特征以及重要的自然特征,例如河流。道路和要素标签也可见。

杂种

map.setMapType(GoogleMap.MAP_TYPE_HYBRID);

附带路线图的卫星照片数据。道路和要素标签也可见。

卫星

map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

卫星照片数据。道路和要素标签不可见。

地形

map.setMapType(GoogleMap.MAP_TYPE_TERRAIN);

地形数据。该映射包括颜色,轮廓线和标签以及透视图底纹。一些道路和标签也可见。

没有

map.setMapType(GoogleMap.MAP_TYPE_NONE);

没有瓷砖。映射将呈现为未加载图块的空网格。


其他样式选择

室内映射

在高缩放级别下,映射将显示室内空间的平面图。这些映射称为室内映射,仅针对“正常”和“卫星”映射类型显示。

启用或禁用室内映射,方法如下:

GoogleMap.setIndoorEnabled(true).
GoogleMap.setIndoorEnabled(false).

我们可以向映射添加自定义样式。

在onMapReady方法中,添加以下代码段

mMap = googleMap;
    try {
        // 使用定义的JSON对象自定义基本映射的样式
        // 在原始资源文件中。
        boolean success = mMap.setMapStyle(
                MapStyleOptions.loadRawResourceStyle(
                        MapsActivity.this, R.raw.style_json));

        if (!success) {
            Log.e(TAG, "样式解析失败。");
        }
    } catch (Resources.NotFoundException e) {
        Log.e(TAG, "Can't find style.", e);
    }

res文件夹下,创建一个原始文件夹名称并添加样式json文件。样本style.json文件

    [
  {
    "featureType": "all",
    "elementType": "geometry",
    "stylers": [
      {
        "color": "#242f3e"
      }
    ]
  },
  {
    "featureType": "all",
    "elementType": "labels.text.stroke",
    "stylers": [
      {
        "lightness": -80
      }
    ]
  },
  {
    "featureType": "administrative",
    "elementType": "labels.text.fill",
    "stylers": [
      {
        "color": "#746855"
      }
    ]
  },
  {
    "featureType": "administrative.locality",
    "elementType": "labels.text.fill",
    "stylers": [
      {
        "color": "#d59563"
      }
    ]
  },
  {
    "featureType": "poi",
    "elementType": "labels.text.fill",
    "stylers": [
      {
        "color": "#d59563"
      }
    ]
  },
  {
    "featureType": "poi.park",
    "elementType": "geometry",
    "stylers": [
      {
        "color": "#263c3f"
      }
    ]
  },
  {
    "featureType": "poi.park",
    "elementType": "labels.text.fill",
    "stylers": [
      {
        "color": "#6b9a76"
      }
    ]
  },
  {
    "featureType": "road",
    "elementType": "geometry.fill",
    "stylers": [
      {
        "color": "#2b3544"
      }
    ]
  },
  {
    "featureType": "road",
    "elementType": "labels.text.fill",
    "stylers": [
      {
        "color": "#9ca5b3"
      }
    ]
  },
  {
    "featureType": "road.arterial",
    "elementType": "geometry.fill",
    "stylers": [
      {
        "color": "#38414e"
      }
    ]
  },
  {
    "featureType": "road.arterial",
    "elementType": "geometry.stroke",
    "stylers": [
      {
        "color": "#212a37"
      }
    ]
  },
  {
    "featureType": "road.highway",
    "elementType": "geometry.fill",
    "stylers": [
      {
        "color": "#746855"
      }
    ]
  },
  {
    "featureType": "road.highway",
    "elementType": "geometry.stroke",
    "stylers": [
      {
        "color": "#1f2835"
      }
    ]
  },
  {
    "featureType": "road.highway",
    "elementType": "labels.text.fill",
    "stylers": [
      {
        "color": "#f3d19c"
      }
    ]
  },
  {
    "featureType": "road.local",
    "elementType": "geometry.fill",
    "stylers": [
      {
        "color": "#38414e"
      }
    ]
  },
  {
    "featureType": "road.local",
    "elementType": "geometry.stroke",
    "stylers": [
      {
        "color": "#212a37"
      }
    ]
  },
  {
    "featureType": "transit",
    "elementType": "geometry",
    "stylers": [
      {
        "color": "#2f3948"
      }
    ]
  },
  {
    "featureType": "transit.station",
    "elementType": "labels.text.fill",
    "stylers": [
      {
        "color": "#d59563"
      }
    ]
  },
  {
    "featureType": "water",
    "elementType": "geometry",
    "stylers": [
      {
        "color": "#17263c"
      }
    ]
  },
  {
    "featureType": "water",
    "elementType": "labels.text.fill",
    "stylers": [
      {
        "color": "#515c6d"
      }
    ]
  },
  {
    "featureType": "water",
    "elementType": "labels.text.stroke",
    "stylers": [
      {
        "lightness": -20
      }
    ]
  }
]

要生成样式json文件,请单击此链接