leaflet地图出现问题(获取mapbox瓦片时出现未授权401错误)

10

我正在尝试在我的网页中添加leaflet地图,并且我正在使用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);

1
请求令牌:请参阅https://www.mapbox.com/developers/api/maps/。您的请求应如下所示:`http://api.tiles.mapbox.com/v4/{mapid}/{z}/{x}/{y}.{format}?access_token=<your access token>`。您只设置了“mapid”。 - slaur4
嘿,谢谢你的回复。我已经从mopbox屏幕上添加了访问令牌,但是我仍然看到一个灰色的屏幕和相同的错误信息在控制台中。我已经将我的更新js代码添加到了我的问题中。 - DrkStr
1个回答

11

将您的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”。 - DrkStr
1
那份代码我给你了,它是有效的,你可以查看这个例子。我该说什么呢?这里有另外一个使用你的MapID和Token的Plunker: http://plnkr.co/edit/kzA9Vw?p=preview,它有效。根据你提供的代码,我无法看到你做错了什么。你能否分享一个包含你问题的Plunker或JSfiddle? - iH8
以前从未使用过plnkr,所以不确定是否做得正确。这是链接:http://plnkr.co/edit/9TLUXY9zutATHHBdCdMk?p=preview - DrkStr
你的CSS有问题,你必须给html和body元素也设置高度为100%:html,body,#map {height: 100%;},而且你忘记初始化地图了,所以当你使用tileLayer.addTo(map)时,它无法将其添加到map中,因为没有map,因此会出现你提到的错误。这是您更新的plunker:http://plnkr.co/edit/FuX4NTdHkzFBp7UYg94V?p=preview - iH8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接