传单中的javascript地图如何刷新

时间:2013-08-29 15:34:57

标签: javascript jquery 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>

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

这里的例子

             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的链接,这是此示例中最接近的可用链接。

3 个答案:

答案 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());