2011-04-21 48 views
2

我有一个谷歌地图,我在地图上插入自定义图层,然后在其上添加谷歌街道和标签。我一直在四处搜寻,看看是否有任何方式像路线图一样将街道和标签重叠。谷歌地图砖 - 街道和标签覆盖着风格?

所以我有这样的:

var myStyle = [ 
{ 
    featureType: "road.arterial", 
    elementType: "all", 
    stylers: [ 
    { visibility: "simplified" } 
    ] 
},{ 
    featureType: "road.highway", 
    elementType: "all", 
    stylers: [ 
     { visibility: "simplified" } 
    ] 
} 
]; 

var myTileLayer = { 
    getTileUrl: function(coord, zoom) { 
     return "myTiles.php?" + 
     "z=" + zoom + "&x=" + coord.x + "&y=" + coord.y + "&client=api"; 
    }, 
    tileSize: new google.maps.Size(256, 256), 
    isPng: true 
}; 

var labelTiles = { 
    getTileUrl: function(coord, zoom) { 
     return "http://mt0.google.com/vt/v=apt.116&hl=en-US&" + 
     "z=" + zoom + "&x=" + coord.x + "&y=" + coord.y + "&client=api"; 
    }, 
    tileSize: new google.maps.Size(256, 256), 
    isPng: true 
}; 

var googleLabelLayer = new google.maps.ImageMapType(labelTiles); 

var mapOptions = { 
    mapTypeControlOptions: { 
    mapTypeIds: ['mystyle', google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.TERRAIN] 
    }, 
    zoom: 9, 
    center: map_center, 
    mapTypeId: 'mystyle' 
}; 
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
map.mapTypes.set('mystyle', new google.maps.StyledMapType(myStyle, { name: 'My Style' })); 
map.overlayMapTypes.insertAt(0, myTileLayer); 
map.overlayMapTypes.insertAt(1, googleLabelLayer); 

有人知道吗?

回答

1

是的,您可以设计街道和标签,至少在有限的范围内。例如,您可以更改道路绿化是这样的:

[ 
    { 
    featureType: "road", 
    elementType: "geometry", 
    stylers: [ 
     { visibility: "simplified" }, 
     { hue: "#3bff00" } 
    ] 
    } 
] 

使用谷歌地图API样式地图精灵在http://gmaps-samples-v3.googlecode.com/svn/trunk/styledmaps/wizard/index.html玩弄不同的设置。它会产生你需要复制风格的代码。它也可以帮助你识别API不支持的事情。例如,我不认为现在有一种方法可以使标签斜体。 (如果有的话,没问题,但你明白我的意思。)

另一件事:Maps API v3.5在不久前推出。您可能想要查看发行说明或通告或其他任何内容,以防现在出现的功能无法显示在向导中,无论出于何种原因。