最简单的加载在线地图
本小节所介绍的这些在线地图,加载起来会非常简单,因为OpenLayers 3已经做了很好的封装,对于开发者而言,无须做过多的编码,即可直接使用。主要包括开源的Open Street Map,微软的Bing地图,Map Quest地图(注: 由于MapQuest开始收费,ol v3.17.0就移除了ol.source.MapQuest
),Stamen地图。
OpenStreetMap地图
Bing地图
Stamen地图
MapQuest地图
<div id="map" style="width: 100%"></div>
<input type="radio" checked="checked" name="mapSource" onclick="switch2OSM();" />OpenStreetMap地图
<input type="radio" name="mapSource" onclick="switch2BingMap();" />Bing地图
<input type="radio" name="mapSource" onclick="switch2StamenMap();" />Stamen地图
<input type="radio" name="mapSource" onclick="switch2MapQuest();" />MapQuest地图
<script>
// Open Street Map 地图层
var openStreetMapLayer = new ol.layer.Tile({
source: new ol.source.OSM()
});
// Bing地图层
var bingMapLayer = new ol.layer.Tile({
source: new ol.source.BingMaps({
key: 'AkjzA7OhS4MIBjutL21bkAop7dc41HSE0CNTR5c6HJy8JKc7U9U9RveWJrylD3XJ',
imagerySet: 'Road'
})
});
// Stamen地图层
var stamenLayer = new ol.layer.Tile({
source: new ol.source.Stamen({
layer: 'watercolor'
})
});
// MapQuest地图层
var mapQuestLayer = new ol.layer.Tile({
source: new ol.source.MapQuest({
layer: 'osm'
})
});
// 创建地图
var map = new ol.Map({
layers: [
openStreetMapLayer
],
view: new ol.View({
// 设置成都为地图中心
center: [104.06, 30.67],
projection: 'EPSG:4326',
zoom: 10
}),
target: 'map'
});
function switch2OSM() {
// 先移除当前的地图,再添加Open Street Map 地图
map.removeLayer(map.getLayers().item(0));
map.addLayer(openStreetMapLayer);
}
function switch2BingMap() {
// 先移除当前的地图,再添加Bing地图
map.removeLayer(map.getLayers().item(0));
map.addLayer(bingMapLayer);
}
function switch2StamenMap() {
// 先移除当前的地图,再添加stamen地图
map.removeLayer(map.getLayers().item(0));
map.addLayer(stamenLayer);
}
function switch2MapQuest() {
// 先移除当前的地图,再添加MapQuest地图
map.removeLayer(map.getLayers().item(0));
map.addLayer(mapQuestLayer);
}
</script>
代码很简单,因为OpenLayers 3对这几个在线服务都做了很好的封装,只用简单的配置一下Source
的构造参数就可以了。此处并没有列出每一个类的所有构造参数,但可以通过API文档查询了解。
上面这个地图涉及到多个地图源,如果都放在地图上,就涉及到图层管理,这一部分的知识将在后续章节图层叠加及管理有更详细的介绍。