【问题标题】:2nd leaflet map not rendering correctly第二张传单地图未正确渲染
【发布时间】:2015-11-16 16:29:32
【问题描述】:

我有 2 个标签,每个标签都有一张传单地图。第一张地图正确渲染,但第二张地图仅显示 1 个图块(其余为灰色),并且地图未以正确区域为中心。我究竟做错了什么?谢谢。

  var map = L.map('tab-1').setView([latitude, longitude], 5);

  L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
    attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
    maxZoom: 18,
    id: '',
    accessToken: ''
  }).addTo(map);

  var map2 = L.map('tab-2').setView([latitude, longitude], 5);

  L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
    attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
    maxZoom: 18,
    id: '',
    accessToken: ''
  }).addTo(map2);

【问题讨论】:

  • 不确定这里是否有足够的信息可以帮助您……您能否在线重现您的问题? (例如jsfiddle)

标签: leaflet


【解决方案1】:

编辑:

如果包含您的第二张地图的 div 未显示(我猜它在带有displayed: none; CSS / 样式的“选项卡”内),Leaflet 将无法正确确定地图容器的大小。

然后,一旦您的第二张地图显示出来,它的容器大小就会改变,但 Leaflet 没有意识到并仍然使用以前的大小。

一旦显示该地图,您只需致电map2.invalidateSize(),以便Leaflet 现在用瓷砖覆盖新区域。

您还需要重新设置视图(使用 setView 或 fitBounds 或您喜欢的任何方法),因为之前使用不正确的容器边界完成了。

演示:http://jsfiddle.net/ve2huzxw/52/

(取消注释第 21 行并重新运行以获得正确的行为)


原答案:

欢迎来到 SO!

你真的用过两次L.map(location),和同一个location吗?

在我看来,Leaflet 会尝试在同一个容器中创建 2 个地图。我猜它会产生意想不到的结果……

这应该是笔误吧?

【讨论】:

  • 谢谢。不,不是同一个地方。这是一个错字。我会编辑帖子。
  • 如果您还没有找到,我想您只需在显示第二个标签后致电map2.invalidateSize()。
猜你喜欢
  • 2016-12-29
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
相关资源
最近更新 更多