我是在 WebApps 中实现地图的新手。我已经开始通过 OpenLayers 实现一个简单的 VectorTile Map,我找到了一个不同的例子来实现它。
首先,我们有 OpenLayers 的 Workshop Page https://openlayers.org/workshop/en/vectortile/map.html 第一个例子是可行的,但我想用 Mapbox 实现一个样式。所以我尝试了进一步的解释: https ://openlayers.org/workshop/en/vectortile/bright.html 这根本不起作用,它不采用样式。这是一个古老的例子吗?
所以我搜索了另一个例子。并找到了这个: https ://cloud.maptiler.com/maps/basic/openlayers 这是一张地图,但我想要两张地图,当我实现两张卡片时,第二张与第一种风格重叠。
有人有自己的服务器的工作示例吗?
我不明白的是,为什么有一些示例我们不必在标头中实现像 OL 这样的库,以及为什么有示例说您只需要一些代码行即可使用 Mapbox 实现 VectorTile Map,而其他示例是例如,使用“fetch”方法和格式 MVT。
MVT 格式用于从车间页面显示 VectorTiles,它说:
const layer = new VectorTileLayer({
source: new VectorTileSource({
attributions: [
'<a href="http://www.openmaptiles.org/" target="_blank">© OpenMapTiles</a>',
'<a href="http://www.openstreetmap.org/about/" target="_blank">© OpenStreetMap contributors</a>'
],
format: new MVT(),
url: `https://free-{1-3}.tilehosting.com/data/v3/{z}/{x}/{y}.pbf.pict?key=${key}`,
maxZoom: 14
})
});
map.addLayer(layer);
然后它说,删除 .js 文件中的所有内容并实现
const map = apply('map-container', './data/bright.json');
这不起作用,因为没有引用 olms.js 并且我们没有 fetch 方法,所以我真的不明白他们在说什么
为什么我们有时在 VectorTiles 中使用 fetch() 方法,有时我们可以跳过它并使用 olms.js 中的 apply() 方法?
我很困扰。
这就是我目前使用的,创建了第二个地图实例,第二个地图采用了第一个地图的部分样式。
var styleJson = 'https://maps.tilehosting.com/styles/basic/style.json?key=0CrAfR2pgm6V6hYu3CEj';
var map = new ol.Map({
target: 'map',
view: new ol.View({
center: ol.proj.fromLonLat([0, 0]),
zoom: 1
})
});
olms.apply(map, styleJson);