j'ai un programme geoJson de base en javascript à l'aide de l'API du dépliant.
<html>
<head>
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css" />
<script src="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.js"></script>
<script src="india.js" type="text/javascript"></script>
</head>
<body>
<div id = "map1" style="width: 1100px; height: 400px"> </div>
<script>
var area = L.map('map1', {center: [27.8800,78.0800], zoom: 4 });
L.tileLayer('http://a.tiles.mapbox.com/v3/raj333.map-gugr5h08/{z}/{x}/{y}.png').addTo(area);
var indiaLayer= L.geoJson(india, {style: {weight: 2,
opacity: 1,
color: 'white',
dashArray: '3',
fillOpacity: 0.1}});
area.addLayer(indiaLayer);
function clicked(){
this.options.style.fillOpacity = 0.8;
//how to refresh layer in the given map
}
indiaLayer.on('click', clicked);
</script>
</body>
</html>
le problème est de savoir comment actualiser automatiquement le contenu de la couche sur la carte.
exemple ici
function clicked(){
indiaLayer.style.fillOpacity = 0.8;
//how to refresh layer in the given map
}
indiaLayer.on('click', clicked);
lorsque l'utilisateur clique sur indiaLayer, la variable fillOpacity change mais ne reflète pas la carte, ce qui est compris, car je ne rafraîchis pas la carte. Je ne sais pas comment le faire.
s'il vous plaît aider
P/s: ce sont les fonctions disponibles sur l’objet indiaLayer (c’est-à-dire cet objet à l’intérieur de la fonction sur laquelle vous avez cliqué ... lequel à utiliser à cet effet ou il n’en existe aucun)
Vous pouvez consulter la liste des méthodes disponibles de GEOJson dans Documentation Leaflef Ceci est le lien vers la v.0.7.7, qui est la plus proche disponible dans cet exemple.
La dernière fois que j'ai utilisé
map._onResize();
et cela m'aide à rafraîchir la carte. Peut-être un petit bidouillage, mais ça marche.
Dans votre code sera area._onResize ()
P.S: Peut-être devriez-vous essayer de changer la façon de définir une nouvelle valeur d'opacité - essayez de changer
function clicked(){
this.options.style.fillOpacity = 0.8;
}
pour que
function clicked(){
this.setStyle({fillOpacity: 0.2});
}
map.invalidateSize();
map._onResize()
- c'est un hack, et rien ne garantit qu'il ne sera pas supprimé dans les futures versions.
area.fitBounds(area.getBounds());