我使用传单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对象上可用的函数(即单击函数内的此对象...用于此目的的那个或者没有用于此目的)
您可以在Leaflef documentation中查看GEOJson可用的方法列表。这是v.0.7.7的链接,这是此示例中最接近的可用链接。
答案 0 :(得分:17)
上次我用过
map._onResize();
这有助于我刷新地图。也许有点破解,但是,它有效。
在你的代码中将是area._onResize()
P.S:也许你应该尝试改变设置新的不透明度值的方法 - 尝试改变
function clicked(){
this.options.style.fillOpacity = 0.8;
}
到那个
function clicked(){
this.setStyle({fillOpacity: 0.2});
}
答案 1 :(得分:16)
<?php
$total = 0;
while($rows = mysqli_fetch_array($stmt)){
$total += $rows['total_pay'];
?>
<tr>
<td align="center"><?php echo $rows['total_pay']; ?></td>
<td align="center"><?php echo $rows['date_of_pay']; ?></td>
<td align="center"><?php echo $name['project_name']; ?></td>
<td align="center">
<!--<input class="imgClass_insert" type="submit" name="submit1" value="" />-->
<input class="imgClass_dell" type="submit" onClick="return confirm('Are you sure you want to delete?')" name="delete_workers" value=""/>
</td>
</tr>
<?php } ?>
<tr>
<td colspan="3">Total <?php echo $name['project_name']; ?></td>
<td><?php echo $total; ?></td>
</tr>
map.invalidateSize();
- 这是一个黑客攻击,并且无法保证在将来的版本中不会将其删除。
答案 2 :(得分:0)
area.fitBounds(area.getBounds());