Zbudowałem narzędzie, które pozwala użytkownikom na stosowanie stylu mapy JSON na Mapie Google, a teraz chcę dodać obsługę dla Google Static Maps API.Konwertowanie tablicy stylów Google Maps na ciąg stylów Google Static Maps
Korzystanie następującą tablicę style:
"[{"stylers":[]},{"featureType":"water","stylers":[{"color":"#d2dce6"}]},{"featureType":"administrative.country","elementType":"geometry","stylers":[{"weight":1},{"color":"#d5858f"}]},{"featureType":"administrative.country","elementType":"labels.text.fill","stylers":[{"color":"#555555"}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"visibility":"off"}]},{"featureType":"administrative.country","stylers":[{"visibility":"on"}]},{"featureType":"road.highway","stylers":[{"saturation":-100},{"lightness":40},{"visibility":"simplified"}]},{"featureType":"road.arterial","stylers":[{"saturation":-100},{"lightness":40},{"visibility":"simplified"}]},{"featureType":"road.local","stylers":[{"saturation":-100},{"visibility":"simplified"}]},{"featureType":"landscape","elementType":"all","stylers":[{"hue":"#FFFFFF"},{"saturation":-100},{"lightness":100}]},{"featureType":"landscape.natural","elementType":"geometry","stylers":[{"saturation":-100}]},{"featureType":"landscape.man_made","elementType":"geometry.fill","stylers":[{"visibility":"simplified"},{"saturation":-100}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"saturation":-100},{"lightness":60}]},{"featureType":"poi","elementType":"geometry","stylers":[{"hue":"#FFFFFF"},{"saturation":-100},{"lightness":100},{"visibility":"off"}]}]"
(More documentation on format)
muszę ostatecznie konwersji na ciąg URLescaped w formacie: style=feature:featureArgument|element:elementArgument|rule1:rule1Argument|rule2:rule2Argument
(More documentation)
Do tej pory” ve napisał ten skrypt JavaScript, aby spróbować przekonwertować rzeczy, ale nie działa poprawnie:
function get_static_style(styles) {
var result = '';
styles.forEach(function(v, i, a){
if (v.stylers.length > 0) { // Needs to have a style rule to be valid.
result += (v.hasOwnProperty('featureType') ? 'feature:' + v.featureType : 'feature:all') + '|';
result += (v.hasOwnProperty('elementType') ? 'element:' + v.elementType : 'element:all') + '|';
v.stylers.forEach(function(val, i, a){
var propertyname = Object.keys(val)[0];
var propertyval = new String(val[propertyname]).replace('#', '0x');
result += propertyname + ':' + propertyval + '|';
});
}
});
console.log(result);
return encodeURIComponent(result);
}
Niestety, ten kod jest wyprowadzanie następujących czynności:
(prawym przyciskiem myszy i wybierz opcję „Kopiuj adres URL”, aby zobaczyć pełną ścieżkę używam - powyższe jest bezpośrednio z obrazy statyczne API)
... Kiedy zamiast powinno to wyglądać tak:
Jakieś pomysły? Dzięki!
Ah! To teraz ma całkowicie sens. Dzięki! – aendrew