OpenLayer 3 中层的概念究竟是如何使用的?

How exactly is used the layer concept in OpenLayer 3?

我是 JavaScript 的新手,我正在评估在项目中使用 OpenLayer 3

我正在研究关于这个库的一些教程,我对图层概念有以下疑问。

所以,根据我的理解(如果我做错了断言,请纠正我)来渲染一个简单的 "Hello World" 地图示例,我可以有这样的东西:

var view = new ol.View2d({
    center: [0,0],
    zoom: 0
});

var map = new ol.Map({
    target: map,        // map is the id of the element in the DOM where the map will be putted
    layers: [layer],
    view: view          // Use the previous defined view object for the settings of this map
});

我还没有在我的电脑上测试这个例子,我从这个视频教程中得到它:https://www.youtube.com/watch?v=SPPhpLTkWX8

所以 map 和 **view* where

似乎是分开的

所以据我所知,存在这种关注点分离,因为我可以有一个 Map,可以使用不同的 View[ 以不同的方式显示=72=] 个对象。

这个推理是正确的还是我遗漏了什么?

而不是第一个大疑点:在教程中显示,前面的代码将地图显示到浏览器中。好的,但是从哪里拿这张地图?是 GoogleMap 地图还是什么?这对我来说很晦涩...

然后教程继续展示图层概念

所以它显示了创建 Open Street Map 层 (https://www.openstreetmap.org) 的代码:

var osm = new ol.layer.Tile({
    source: new ol.source.OSM();
});

然后我认为要使用这一层,我必须将它作为元素添加到之前的 层: [layer] 数组定义到 map对象。正确吗?

现在脑子里不太清楚的是

什么是图层?它是在特定地图上添加的附加信息还是一种特殊类型的地图(例如 Google 地图或从其他地图提供商获得的其他类型的地图)。

我认为这是第一个(一些数据在地图上显示为图层,实际上在 map 对象上我有一个 layers array as field 我认为我可以在其中添加多于一层以在此地图上显示不同的信息)。

但我有这个疑问,因为我不明白谁是 OpenLayer 中的地图提供者(Google 地图或什么?)以及我是否也可以指定一个特定的地图提供者。

也产生了这个疑问,因为我看到使用 OpenLayer 我可以使用 Bing Map 作为层,但据我所知 Bing Map 是替代 Google Maps.

的地图提供程序
var bing= new ol.layer.Tile({
    source: new ol.source.BingMaps({
        key: API KEY,
        style: setted style
    })
});

那么具体是如何工作的?

一下子有很多问题,让我试着回答一些:

So from what I have understand there is this separation of concern because I can have a single Map that can be displayed in different way using differents View objects.

Is it this reasoning correct or am I missing something?

其实恰恰相反。不同的地图可以共享相同的view。这是一个例子: http://openlayers.org/en/master/examples/side-by-side.html

Ok, but from where is take this map? Is it a GoogleMap map or what? This is pretty obscure for me... ... What is a layer?

地图是图层的集合。层是地理 dataset/datasource 的视觉表示(例如矢量特征、光栅图块和图像)。例如:

var osm = new ol.layer.Tile({
    source: new ol.source.OSM();
});

这定义了一个使用 OpenStreetMap 瓦片图像作为源的瓦片层。如果您将源替换为 ol.source.BingMaps,您的图层将使用来自 Bing.

的平铺图像

But I have this doubt because I can't understand who is the map provider in OpenLayer (Google Maps or what?) and if I can also speciy a specific Map Provider.

This doubt is also generated because I have see that using OpenLayer I can use Bing Map as layer but from what I know Bing Map is a map provider alternative to Google Maps.

OpenLayers 是一个用于创建交互式地图的库。 OpenLayers 不是数据提供者,但它允许使用来自不同提供者的数据,例如来自 OpenStreetMap 或 Bing.

的图块

Google 有一个 JavaScript 库,Google 地图 JavaScript API,但 Google 也是他们的数据提供者街道地图和卫星图像图块。

我希望这能让它更清楚一点。我建议您查看 OpenLayers 3 Workshop and at mapschool.io and/or Learning Lunches: How to Make a Map 以更好地了解基础知识。