我在div中有一个这样的传单地图:

  <script src="http://cdn.leafletjs.com/leaflet-0.4/leaflet.js"></script>

  <!--[if lt IE 9]>
  <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
  <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.4/leaflet.css" />
  <!--[if lte IE 8]>
  <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.4/leaflet.ie.css" />
  <![endif]-->
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />


然后,我有一个这样的股利:



一些加载地图的js:

map = L.map($attrs.id,
                         center: [40.094882122321145, -3.8232421874999996]
                         zoom: 5
      )
      L.tileLayer("http://{s}.tile.cloudmade.com/57cbb6ca8cac418dbb1a402586df4528/997/256/{z}/{x}/{y}.png",
                  maxZoom: 18
      ).addTo map


然后在页面加载时,我有一些JS监视窗口高度并调整大小:

$("#map").height($(window).height())
$(window).resize(_.throttle(->
  $("#map").height($(window).height())
, 100
))


但是,在加载地图时,会加载一半的灰色瓷砖。当我调整大小时,地图加载正常,但初始加载为1/2灰色

最佳答案

如果您没有理由使用JS进行地图大小调整,则最好使用CSS:

html, body, #map {
   width: 100%;
   height: 100%;
}


但是,您可以在将地图插入DOM后尝试使用map.invalidateSize()(或按$("#map").height($(window).height())调整地图大小)。

调整窗口大小时,默认情况下会调用invalidateSize(),请参见以下链接:
https://github.com/Leaflet/Leaflet/blob/master/src/map/Map.js#L609https://github.com/Leaflet/Leaflet/blob/master/src/map/Map.js#L616

关于coffeescript - 单张 map 加载半灰瓦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15089541/

10-12 00:07
查看更多