web-dev-qa-db-fra.com

carte javascript dans la brochure comment actualiser

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.

12
user609306

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});
 }
17
Elephant
map.invalidateSize();

map._onResize() - c'est un hack, et rien ne garantit qu'il ne sera pas supprimé dans les futures versions.

15
Pavel Kharibin

area.fitBounds(area.getBounds());

0
justDev7a3