14

我使用传单 API 在 javascript 中有一个基本的 geoJson 程序。

<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>

问题是我将如何自动刷新地图上图层的内容。

这里的例子

             function clicked(){

        indiaLayer.style.fillOpacity = 0.8;
            //how to refresh layer in the given map

        }

        indiaLayer.on('click', clicked);   

当用户单击 indiaLayer 时,fillOpacity 变量会发生变化,但不会反映在地图上,这是可以理解的,因为我没有刷新地图。我不知道该怎么做。

请帮忙

P/s:这些是 indiaLayer 对象上可用的功能(即这个对象在 clicked 函数中......用于此目的或不存在)

您可以在Leaflef 文档中查看 GEOJson 的可用方法列表这是指向 v.0.7.7 的链接,这是本示例中最接近可用的。

4

3 回答 3

20

上次我用过

map._onResize(); 

这有助于我刷新地图。也许有点破解,但是,它的工作。

在您的代码中将是 area._onResize()

PS:也许你应该尝试改变设置新不透明度值的方式 - 尝试改变

function clicked(){
    this.options.style.fillOpacity = 0.8;
 }

到那个

function clicked(){
    this.setStyle({fillOpacity: 0.2});
 }
于 2013-08-29T16:41:57.237 回答
20
map.invalidateSize();

map._onResize()- 这是一个 hack,并且不能保证它不会在未来的版本中被删除。

于 2015-11-22T14:06:23.360 回答
0

area.fitBounds(area.getBounds());

于 2016-12-13T13:10:18.887 回答