【问题标题】:Trouble with leaflet maps (GET mapbox tiles unauthorized 401)传单地图出现问题(获取未经授权的地图框图块 401)
【发布时间】:2015-04-22 10:48:40
【问题描述】:

我正在尝试将传单地图添加到我的网页中,并且我正在使用 Mapbox 磁贴。我无法让基本教程中的地图正常工作,我所看到的只是一个灰屏。我有一个来自 mapbox 的 mp id,我已将它添加到我的代码中。下面附上相关代码。

var map = L.map('map').setView([51.505, -0.09], 13);
    L.tileLayer('http://{s}.tiles.mapbox.com/v3/rakshak.l937n12c/{z}/{x}/{y}.png', {
    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
    }).addTo(map);

这就是我在控制台中看到的:

GET http://a.tiles.mapbox.com/v4/rakshak.l937n12c/13/4093/2723.png 401 (Unauthorized)

在 css 中,我刚刚将地图高度设置为 height: 100vh。

我在屏幕上看到的只是地图缩放控制器和灰色屏幕。我错过了重要的一步吗?

编辑1:更新JS代码:

var map = L.map('map').setView([51.505, -0.09], 13);
L.tileLayer('http://api.tiles.mapbox.com/v4/rakshak.l937n12c/{z}/{x}/{y}.{format}?access_token=pk.eyJ1IjoicmFrc2hhayIsImEiOiJ5cHhqeHlRIn0.Vi87VjI1cKbl1lhOn95Lpw', {
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
}).addTo(map);

【问题讨论】:

  • 请求令牌:请参阅mapbox.com/developers/api/maps。您的请求应如下所示:http://api.tiles.mapbox.com/v4/{mapid}/{z}/{x}/{y}.{format}?access_token=&lt;your access token&gt;。你只设置了mapid
  • 您好,感谢您的回复,我从 mopbox 屏幕添加了访问令牌,但我仍然在控制台中看到灰屏和相同的错误消息。我已将我的更新 js 代码添加到我的问题中。

标签: leaflet mapbox


【解决方案1】:

设置您的 tileLayer 以包含您的地图 ID 和您的用户令牌:

var tileLayer = L.tileLayer('https://{s}.tiles.mapbox.com/v4/{mapId}/{z}/{x}/{y}.png?access_token={token}', {
    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>',
    subdomains: ['a','b','c','d'],
    mapId: <YOUR MAPID HERE>,
    token: <YOUR TOKEN HERE>
});

这是一个关于 Plunker 的工作示例:http://plnkr.co/edit/Kf3f8h?p=preview

【讨论】:

  • 试过了,现在我在 Leaflet.js:7 中收到错误“Uncaught TypeError: undefined is not a function”。
  • 好吧,我给你的代码,工作正常,你可以查看示例。我能说什么?这是另一个使用您的 MapID 和令牌的 Plunker:plnkr.co/edit/kzA9Vw?p=preview,它可以工作。根据您提供的代码,我看不到您做错了什么。你能分享一个有问题的 Plunker 或 JSfiddle 吗?
  • 以前从未使用过 plnkr,所以不确定我是否做得对。这是链接:plnkr.co/edit/9TLUXY9zutATHHBdCdMk?p=preview
  • 您的 CSS 错误,您必须将 html 和 body 元素的高度也设置为 100%:html, body, #map { height: 100%; } 并且您忘记初始化地图,因此当您使用 tileLayer.addTo(map) 时它可以不要将它添加到map,因为没有map,因此它会因您提到的错误而失败。这是您更新的 plunker:plnkr.co/edit/FuX4NTdHkzFBp7UYg94V?p=preview
猜你喜欢
  • 1970-01-01
  • 2014-06-25
  • 2016-12-14
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多