我使用 leaflet 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>
问题是如何在 map 上自动刷新图层的内容。
例子在这里
function clicked(){
indiaLayer.style.fillOpacity = 0.8;
//how to refresh layer in the given map
}
indiaLayer.on('click', clicked);
当用户点击 indiaLayer 时,fillOpacity 变量会发生变化但不会反射(reflect)在 map 上,这是可以理解的,因为我没有刷新 map 。我不知道该怎么做。
请帮忙
P/s:这些是 indiaLayer 对象上可用的函数(即点击函数中的这个对象......为此目的使用哪个函数或不存在)
您可以在 Leaflef documentation 中查看 GEOJson 的可用方法列表。这是指向 v.0.7.7 的链接,这是本示例中可用的最接近的链接。
最佳答案
我上次用过
map._onResize();
这有助于我刷新 map 。也许有点 hack,但是,它有效。
在您的代码中将是 area._onResize()
P.S:也许你应该尝试改变设置新不透明度值的方式 - 尝试改变
function clicked(){
this.options.style.fillOpacity = 0.8;
}
对那个
function clicked(){
this.setStyle({fillOpacity: 0.2});
}
关于传单中的javascript map 如何刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18515230/