본문

180907(금) - Google Maps (Adding a Styled Map)

Google Maps


Adding a Styled Map

- night mode 같은 custom style 만들어서 적용가능

- standard map styles, features like road, park, businesses, POIs...

- styling 은 normal map type에서만 적용되며, indoor map은 영향 없다.


Add a resource containing JSON style object

- declarations in JSON format

- use a raw resource or string


- RAW

[
 
{
   
"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"
     
}
   
]
 
}...
    /**
     * Manipulates the map when it's available.
     * The API invokes this callback when the map is ready for use.
     */

   
@Override
   
public void onMapReady(GoogleMap googleMap) {

       
try {
           
// Customise the styling of the base map using a JSON object defined
           
// in a raw resource file.
           
boolean success = googleMap.setMapStyle(
                   
MapStyleOptions.loadRawResourceStyle(
                           
this, R.raw.style_json));

           
if (!success) {
               
Log.e(TAG, "Style parsing failed.");
           
}
       
} catch (Resources.NotFoundException e) {
           
Log.e(TAG, "Can't find style. Error: ", e);
       
}
       
// Position the map's camera near Sydney, Australia.
        googleMap
.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(-34, 151)));
   
}
}



- STRING

<resources>
 
<string name="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\"
        }
      ]
    }...
/**
     * Manipulates the map when it's available.
     * The API invokes this callback when the map is ready for use.
     */

   
@Override
   
public void onMapReady(GoogleMap googleMap) {

       
// Customise the styling of the base map using a JSON object defined
       
// in a string resource file. First create a MapStyleOptions object
       
// from the JSON styles string, then pass this to the setMapStyle
       
// method of the GoogleMap object.
       
boolean success = googleMap.setMapStyle(new MapStyleOptions(getResources()
               
.getString(R.string.style_json)));

       
if (!success) {
           
Log.e(TAG, "Style parsing failed.");
       
}
       
// Position the map's camera near Sydney, Australia.
        googleMap
.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(-34, 151)));
   
}



More about JSON style declarations

Selectors

- geographic components

- featureType and elementType properties


Stylers

- color


Maps Platform Styling Wizard

Maps Platform Styling Wizard

공유

댓글