javascript - 传单-刷新 map

标签 javascript leaflet

我知道这个问题之前已经被问过并回答过,但我无法成功地实现这些示例。

我尝试通过 zoomedIn() 加载 map (工作正常),然后按下按钮,使用 zoomedOut() 加载 map

但是,在 zoomedOut() 中,我在 var map = new L.Map('map');< 之后抛出 Map 容器已初始化/

我原以为上一行 if (map != undefined) { map.remove(); } 就会解决这个问题。

发生了什么事 - 我如何重绘 map ?

<body onLoad="javascript:zoomedIn();">
<form method = "post">
<button type="button" onclick="return zoomedOut()">Zoom Out</button>
<div id="map"</div>
</form>

<script language="javascript">
  function zoomedIn() {
     var map = new L.Map('map');
    L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
        id: 'mapbox.streets'
    }).addTo(map);
         var devon = new L.LatLng(50.900958,-3.370846);
         map.setView(devon, 7);
      }
</script>

<script language="javascript">
  function zoomedOut() {
    if (map != undefined) { map.remove(); }
    var map = new L.Map('map');
    L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
        id: 'mapbox.streets'
    }).addTo(map);
         var devon = new L.LatLng(50.900958,-3.370846);
         map.setView(devon, 1);
      }

最佳答案

您可以使用

map.invalidateSize()

这对我有用

关于javascript - 传单-刷新 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44745020/

相关文章:

javascript - 如何修复React "Warning: Each child in a list should have a unique "key“prop”

javascript - 如何在文本框中传输传单标记纬度/经度

javascript - 事件监听器帮助(使一个按钮/元素执行多项操作)

javascript - 如何在 JQuery 验证器的 invalidHandler 中显示消息

javascript - 使用嵌套数组访问复杂的 Json 文件

javascript - 添加有关突出显示状态的图例和信息

angular - DivIcon 内的 Leaflet Angular 组件

javascript - 小叶杂食+聚类标记+过滤标记聚类组

javascript - map.on ('click' ,onClick) 当 zoomBox 时也会触发

javascript - Angular 指令中的 element.css 不更新元素的 css