Mehdi Mousavi
Mehdi Mousavi

Reputation: 159

customizing google map tile server url

I use this url for fetching map tile from google server

http://mts0.google.com/vt/lyrs=m@189000000&hl=en&src=app&x=41189&y=25680&z=16&s=Gal

I wonder if there is a way to customize this url, by adding some extra parameters to fetch tile without any label of streets or extra info or overlays. something just like customizing map in map api v3. any suggestion would be welcomed.

Upvotes: 10

Views: 9096

Answers (2)

Manuel Otto
Manuel Otto

Reputation: 6540

Implementation of what Dr. Molle found out:

function getEncodedStyles(styles){
var ret = "";
var styleparse_types = {"all":"0","administrative":"1","administrative.country":"17","administrative.land_parcel":"21","administrative.locality":"19","administrative.neighborhood":"20","administrative.province":"18","landscape":"5","landscape.man_made":"81","landscape.natural":"82","poi":"2","poi.attraction":"37","poi.business":"33","poi.government":"34","poi.medical":"36","poi.park":"40","poi.place_of_worship":"38","poi.school":"35","poi.sports_complex":"39","road":"3","road.arterial":"50","road.highway":"49","road.local":"51","transit":"4","transit.line":"65","transit.station":"66","water":"6"};
var styleparse_elements = {"all":"a","geometry":"g","geometry.fill":"g.f","geometry.stroke":"g.s","labels":"l","labels.icon":"l.i","labels.text":"l.t","labels.text.fill":"l.t.f","labels.text.stroke":"l.t.s"};
var styleparse_stylers = {"color":"p.c","gamma":"p.g","hue":"p.h","invert_lightness":"p.il","lightness":"p.l","saturation":"p.s","visibility":"p.v","weight":"p.w"};
for(i=0;i<styles.length;i++){
    if(styles[i].featureType){
        ret += "s.t:"+styleparse_types[styles[i].featureType]+"|";
    }
    if(styles[i].elementType){
        if(!styleparse_elements[styles[i].elementType])
            console.log("style element transcription unkown:"+styles[i].elementType);
        ret += "s.e:"+styleparse_elements[styles[i].elementType]+"|";
    }
    if(styles[i].stylers){
        for(u=0;u<styles[i].stylers.length;u++){
            var keys = [];
            var cstyler = styles[i].stylers[u]
            for(var k in cstyler){
                if(k=="color"){
                    if(cstyler[k].length==7)
                        cstyler[k] = "#ff"+cstyler[k].slice(1);
                    else if(cstyler[k].length!=9)
                        console.log("malformed color:"+cstyler[k]);
                }
                ret += styleparse_stylers[k]+":"+cstyler[k]+"|";
            }
        }
    }
    ret = ret.slice(0,ret.length-1);
    ret += ","
}
return encodeURIComponent(ret.slice(0,ret.length-1));
}

Input is in this case a regular google maps styles array - A good wizard for that is Snazzy Maps

Anyways, thanks to Dr. Molle for saving hours!

Upvotes: 9

Dr.Molle
Dr.Molle

Reputation: 117354

I didn't find a documentation about it, but there is a parameter apistyle

the value(must be urlencoded) to hide street-labels would be

s.t:3|s.e:l|p.v:off

The following is a guess because of a missing documentation:

  • s.t defines the feature-type, the value 3 seems to be road
  • s.e defines the element e.g. labels or geometry
  • p defines the style, v stands for visibility , the value off should be clear. result:

    https://mts0.google.com/vt/lyrs=m@289000001&hl=en&src=app&x=41189&y=25680&z=16&s=Gal&apistyle=s.t%3A3|s.e%3Al|p.v%3Aoff
    

You'll have to play around with the parameters to get the desired result. In the past it was possible to get the style e.g. by inspecting the tile-URL with developer-tools when using for example the Styled Map Wizard , but they have modified the tile-URLs used by the javascript-API , the parameters now will be encoded somehow.

A list of parameters and values:

FeatureTypes:s.t

  • all 0
  • administrative 1
  • administrative.country 17
  • administrative.land_parcel 21
  • administrative.locality 19
  • administrative.neighborhood 20
  • administrative.province 18
  • landscape 5
  • landscape.man_made 81
  • landscape.natural 82
  • poi 2
  • poi.attraction 37
  • poi.business 33
  • poi.government 34
  • poi.medical 36
  • poi.park 40
  • poi.place_of_worship 38
  • poi.school 35
  • poi.sports_complex 39
  • road 3
  • road.arterial 50
  • road.highway 49
  • road.local 51
  • transit 4
  • transit.line 65
  • transit.station 66
  • water 6

ElementType: s.e

  • geometry g
  • geometry.fill g.f
  • geometry.stroke g.s
  • labels l
  • labels.icon l.i
  • labels.text l.t
  • labels.text.fill l.t.f
  • labels.text.stroke l.t.s

Styler:

  • color p.c
    RGBA hex-value #aarrggbb
  • gamma p.g
    float between 0.01 and 10
  • hue p.h
    RGB hex-value #rrggbb
  • invert_lightness p.il
    true/false
  • lightness p.l
    float between -100 and 100
  • saturation p.s
    float between -100 and 100
  • visibility p.v
    on/simplified/off
  • weight p.w
    integer >=0

Upvotes: 26

Related Questions