gpt4 book ai didi

javascript - 如何将标准 OpenStreetMap 切片服务器与 Mapbox GL JS 结合使用?

转载 作者:行者123 更新时间:2023-12-02 21:30:21 25 4
gpt4 key购买 nike

我正在尝试将 Mapbox GL 与普通的公共(public) OSM 切片服务器结合使用。继example of how to add a raster tile source ,我对一个最小示例的看法如下:

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8" />
<title>Minimal OSM Test</title>
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
<script src="https://api.mapbox.com/mapbox-gl-js/v1.8.1/mapbox-gl.js"></script>
<link href="https://api.mapbox.com/mapbox-gl-js/v1.8.1/mapbox-gl.css" rel="stylesheet" />
<style>
body {
margin: 0;
padding: 0;
}
#map {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
border: solid 1px #000000;
}
</style>
</head>

<body>
<div id="map"></div>
<script>
var map = new mapboxgl.Map({
container: 'map',
style: {
version: 8,
sources: {
osm: {
type: 'raster',
tiles: ["https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"],
}
},
layers: [{
id: 'osm',
type: 'raster',
source: 'osm',
}],
}
});
</script>

</body>

</html>

不幸的是,这似乎不起作用: map 没有显示任何内容,并且浏览器控制台充满了被阻止的跨源请求错误。

使用其他 map 库(例如 Leaflet 或 OpenLayers),我可以毫无问题地连接到公共(public) OSM 服务器。

如何在 Mapbox GL JS 中实现此功能?

最佳答案

综合上述评论中的见解,并添加有关归因的重要注释,这个 JSFiddle 实现了您正在寻找的内容:https://jsfiddle.net/g1rwx8kp/ .

进行了以下更改:

  • chris-g所述,您应该从图 block 网址中删除 {s}
  • AndrewHarvey所述,指定tileSize是一个很好的做法。这里我添加了tileSize: 256
  • 您应该将一个字符串传递给attribution选项,以便在 map 上显示图 block 和数据源的相关属性。我在上面的 JSFiddle 中包含了一个示例,但正如我免责声明的那样,我不能保证其准确性,并且可能应该进一步完善。根据有关磁贴使用政策的文档:

    OpenStreetMap data is free for everyone to use. Our tile servers are not.

    此外,“清楚地显示许可证归属”被列为使用平铺服务器的要求。因此,我建议在频繁连接到公共(public) OSM 服务器之前仔细检查这些策略。或者,也许有使用这些图 block 服务经验的其他人可以提供更多见解!

关于javascript - 如何将标准 OpenStreetMap 切片服务器与 Mapbox GL JS 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60637037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com