Openlayers之加载开放数据源
1、新建一个html页面,引入ol.js和ol.css文件,然后在body中创建一个div标签和一个select下拉列表框;
2、代码实现
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<link href="../css/ol.css" rel="stylesheet" />
<script src="../lib/ol/ol.js"></script>
<script type="text/javascript">
window.onload = function () {
//初始化地图对象
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source:new ol.source.OSM()
})
],
view: new ol.View({
center: [0, 0],
zoom:4
})
});
//矢量数据图层
var vectorLayer;
//数据存放地址
var dataUrl;
//视图中心点
var center;
//地图缩放等级
var zoom;
//地图投影
var projection = ol.proj.get('EPSG:3857');
//下拉列表选择类型
var typeSelect = document.getElementById('type');
//下拉列表选项发生变化时执行函数
typeSelect.onchange = function () {
//获取数据类型为当前选择的文本
var dataType = typeSelect.value;
if (dataType == "geojson") { //如果是geojson格式数据则指定geojson数据源
dataUrl = "../data/geojson/countries.geojson";
center = [0, 0];
zoom = 2;
}else if(dataType == "kml"){ //如果是kml格式数据则加载指定的kml数据源
dataUrl = "../data/kml/2012-02-10.kml";
center = [876970.8463461736, 5859807.853963373];
zoom = 10;
} else if (dataType == "gpx") { //如果是gpx格式数据则加载指定的gpx数据源
dataUrl = "../data/gpx/fells_loop.gpx";
center = [-7916041.528716288, 5228379.045749711];
zoom = 20;
}
//加载矢量数据
loadVectData(dataType, dataUrl);
//获取当前视图
var view = map.getView();
//设置视图中心点坐标
view.setCenter = center;
//设置地图缩放等级
view.setZoom = zoom;
};
//默认加载geojson格式数据
loadVectData("geojson", "../data/geojson/countries.geojson");
//加载矢量数据函数
//dataType 数据类型
//dataUrl 数据URL
function loadVectData(dataType, dataUrl) {
//如果当前存在矢量图层则移除
if (vectorLayer != null || vectorLayer == "undefined") {
map.removeLayer(vectorLayer);
}
//根据数据类型创建不同的矢量数据源
switch (dataType) {
//创建geojson矢量数据源
case "geojson":
var vectorSource = new ol.source.Vector({
url: dataUrl,
format:new ol.format.GeoJSON()
});
break;
//创建kml矢量数据源
case "kml":
var vectorSource = new ol.source.Vector({
url: dataUrl,
format: new ol.format.KML()
});
break;
//创建gpx矢量数据源
case "gpx":
var vectorSource = new ol.source.Vector({
url: dataUrl,
format: new ol.format.GPX()
});
break;
}
//初始化矢量数据图层
vectorLayer = new ol.layer.Vector({
source: vectorSource,
});
//加载矢量数据到map中
map.addLayer(vectorLayer);
}
};
</script>
</head>
<body>
<div id="menu">
<label>请选择要加载的数据类型</label>
<select id="type">
<option selected="selected" value="geojson">geojson</option>
<option value="kml">kml</option>
<option value="gpx">gpx</option>
</select>
</div>
<div id="map"></div>
</body>
</html>
3、结果展示
默认加载geojson数据源
加载kml数据源
加载gpx数据源
转载自:https://blog.csdn.net/SmileCoffin/article/details/55049729