J'ai créé un outil qui permet aux utilisateurs d'appliquer un style de carte JSON à une carte Google, et je souhaite maintenant ajouter un support pour le Google Static Maps API.Conversion d'un tableau de styles Google Maps en styles Google Static Maps chaîne
Utilisation du tableau de styles suivants:
"[{"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)
Je dois convertir en fin de compte cela en une chaîne URLescaped, au format: style=feature:featureArgument|element:elementArgument|rule1:rule1Argument|rule2:rule2Argument
(More documentation)
Jusqu'à présent, je J'ai écrit ce JavaScript pour essayer de convertir les choses, mais cela ne fonctionne pas correctement:
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);
}
Hélas, ce code est délivrer en sortie les éléments suivants:
(Faites un clic droit et sélectionnez « copier l'URL » pour voir le chemin complet que je utilise - ce qui précède est direct de la API images statiques)
... Quand elle devrait plutôt ressembler à ceci:
Des idées? Merci!
Ah! Cela a tout à fait du sens maintenant. Merci! – aendrew