当前位置:   article > 正文

Openlayers之加载开放数据源_openlyer访问数据源

openlyer访问数据源

1、新建一个html页面,引入ol.js和ol.css文件然后在body中创建一个div标签和一个select下拉列表框;

2、代码实现

  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  5. <title></title>
  6. <link href="../css/ol.css" rel="stylesheet" />
  7. <script src="../lib/ol/ol.js"></script>
  8. <script type="text/javascript">
  9. window.onload = function () {
  10. //初始化地图对象
  11. var map = new ol.Map({
  12. target: 'map',
  13. layers: [
  14. new ol.layer.Tile({
  15. source:new ol.source.OSM()
  16. })
  17. ],
  18. view: new ol.View({
  19. center: [0, 0],
  20. zoom:4
  21. })
  22. });
  23. //矢量数据图层
  24. var vectorLayer;
  25. //数据存放地址
  26. var dataUrl;
  27. //视图中心点
  28. var center;
  29. //地图缩放等级
  30. var zoom;
  31. //地图投影
  32. var projection = ol.proj.get('EPSG:3857');
  33. //下拉列表选择类型
  34. var typeSelect = document.getElementById('type');
  35. //下拉列表选项发生变化时执行函数
  36. typeSelect.onchange = function () {
  37. //获取数据类型为当前选择的文本
  38. var dataType = typeSelect.value;
  39. if (dataType == "geojson") { //如果是geojson格式数据则指定geojson数据源
  40. dataUrl = "../data/geojson/countries.geojson";
  41. center = [0, 0];
  42. zoom = 2;
  43. }else if(dataType == "kml"){ //如果是kml格式数据则加载指定的kml数据源
  44. dataUrl = "../data/kml/2012-02-10.kml";
  45. center = [876970.8463461736, 5859807.853963373];
  46. zoom = 10;
  47. } else if (dataType == "gpx") { //如果是gpx格式数据则加载指定的gpx数据源
  48. dataUrl = "../data/gpx/fells_loop.gpx";
  49. center = [-7916041.528716288, 5228379.045749711];
  50. zoom = 20;
  51. }
  52. //加载矢量数据
  53. loadVectData(dataType, dataUrl);
  54. //获取当前视图
  55. var view = map.getView();
  56. //设置视图中心点坐标
  57. view.setCenter = center;
  58. //设置地图缩放等级
  59. view.setZoom = zoom;
  60. };
  61. //默认加载geojson格式数据
  62. loadVectData("geojson", "../data/geojson/countries.geojson");
  63. //加载矢量数据函数
  64. //dataType 数据类型
  65. //dataUrl 数据URL
  66. function loadVectData(dataType, dataUrl) {
  67. //如果当前存在矢量图层则移除
  68. if (vectorLayer != null || vectorLayer == "undefined") {
  69. map.removeLayer(vectorLayer);
  70. }
  71. //根据数据类型创建不同的矢量数据源
  72. switch (dataType) {
  73. //创建geojson矢量数据源
  74. case "geojson":
  75. var vectorSource = new ol.source.Vector({
  76. url: dataUrl,
  77. format:new ol.format.GeoJSON()
  78. });
  79. break;
  80. //创建kml矢量数据源
  81. case "kml":
  82. var vectorSource = new ol.source.Vector({
  83. url: dataUrl,
  84. format: new ol.format.KML()
  85. });
  86. break;
  87. //创建gpx矢量数据源
  88. case "gpx":
  89. var vectorSource = new ol.source.Vector({
  90. url: dataUrl,
  91. format: new ol.format.GPX()
  92. });
  93. break;
  94. }
  95. //初始化矢量数据图层
  96. vectorLayer = new ol.layer.Vector({
  97. source: vectorSource,
  98. });
  99. //加载矢量数据到map中
  100. map.addLayer(vectorLayer);
  101. }
  102. };
  103. </script>
  104. </head>
  105. <body>
  106. <div id="menu">
  107. <label>请选择要加载的数据类型</label>
  108. <select id="type">
  109. <option selected="selected" value="geojson">geojson</option>
  110. <option value="kml">kml</option>
  111. <option value="gpx">gpx</option>
  112. </select>
  113. </div>
  114. <div id="map"></div>
  115. </body>
  116. </html>
3、结果展示

默认加载geojson数据源

加载kml数据源

加载gpx数据源


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/595236
推荐阅读
相关标签
  

闽ICP备14008679号