当前位置:   article > 正文

openlayers加载瓦片地图并手动标记坐标点

openlayers加载瓦片地图并手动标记坐标点

目录

一、下载openlayers的脚本文件

二、编码

三、测试


一、下载openlayers的脚本文件

访问OpenLayers - Welcome

选个版本下载。

二、编码

创建一个项目,普通原生前端项目就行。

将ol.js、ol.css放在根目录下,当然还有你的瓦片地图也放在根目录下。

大致就是如下这样:

marker.png是标记坐标点的

然后我们开始编写代码在emss.html中:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>openlayers3</title>
  6. <link rel="stylesheet" href="ol.css" />
  7. <script type="text/javascript" src="ol.js"></script>
  8. <style>
  9. html{
  10. height: 100%;
  11. width: 100%;
  12. padding:0;
  13. margin:0;
  14. }
  15. body{
  16. height: 100%;
  17. width: 100%;
  18. padding:0;
  19. margin:0;
  20. }
  21. .map {
  22. height: 100%;
  23. width: 100%;
  24. }
  25. </style>
  26. </head>
  27. <body>
  28. <div id="map" class="map"></div>
  29. <script>
  30. var BaseMapLayer = function(options) {
  31. var layer = new ol.layer.Tile({
  32. source: new ol.source.XYZ({
  33. url: options.url,
  34. tilePixelRatio: 1,
  35. minZoom:2,
  36. maxZoom:17
  37. })
  38. });
  39. return layer;
  40. };
  41. var view = new ol.View({
  42. // 这两个数就是你瓦片地图地点的中心坐标
  43. center: ol.proj.fromLonLat([200, 100]),
  44. zoom: 13,
  45. minZoom: 13,
  46. maxZoom: 17
  47. });
  48. var sateliteopt = {
  49. url: 'data/tiles/{z}/{x}/{y}.png'
  50. };
  51. var sate = new ol.layer.Group({
  52. layers: [
  53. new BaseMapLayer(sateliteopt)
  54. ]
  55. });
  56. // 添加标注层
  57. var markerLayer = new ol.layer.Vector({
  58. source: new ol.source.Vector(),
  59. style: new ol.style.Style({
  60. image: new ol.style.Icon({
  61. anchor: [0.5, 46],
  62. anchorXUnits: 'fraction',
  63. anchorYUnits: 'pixels',
  64. src: 'data/marker.png' // 标注图标的路径
  65. })
  66. })
  67. });
  68. // 创建标注
  69. var marker = new ol.Overlay({
  70. element: document.getElementById('marker'),
  71. positioning: 'center-center',
  72. stopEvent: false,
  73. offset: [0, -23]
  74. });
  75. var map = new ol.Map({
  76. view: view,
  77. layers: [
  78. sate,
  79. markerLayer // 添加标注层到地图
  80. ],
  81. overlays: [marker], // 添加标注到地图
  82. target: 'map'
  83. });
  84. // 监听点击事件
  85. map.on('click', function(event) {
  86. // 将点击的经纬度转换为地图的像素坐标
  87. var feature = new ol.Feature({
  88. geometry: new ol.geom.Point(event.coordinate)
  89. });
  90. // 将标注添加到标注层
  91. markerLayer.getSource().addFeature(feature);
  92. // 将标注移动到点击的位置
  93. marker.setPosition(event.coordinate);
  94. });
  95. /* map.on('click', function(event) {
  96. // 将点击的像素坐标转换为经纬度坐标
  97. var coordinate = event.coordinate;
  98. var lat = ol.proj.toLonLat(coordinate)[1];
  99. var lon = ol.proj.toLonLat(coordinate)[0];
  100. // 在控制台打印坐标
  101. console.log('纬度:', lat, '经度:', lon);
  102. // 创建一个点要素
  103. var feature = new ol.Feature({
  104. geometry: new ol.geom.Point(coordinate)
  105. });
  106. // 清除标注层上的所有要素
  107. markerLayer.getSource().clear();
  108. // 将新标注添加到标注层
  109. markerLayer.getSource().addFeature(feature);
  110. // 将标注移动到点击的位置
  111. marker.setPosition(coordinate);
  112. });*/
  113. </script>
  114. </body>
  115. </html>

这里面有个注释掉的方法,读者可以打开试试,其实就是标记的时候打印经纬度,一般这个值我们都用来存储数据库中。

三、测试

懒得自己写的可以下载我整理的源码:https://download.csdn.net/download/qq_38196449/89237536?spm=1001.2014.3001.5503

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

闽ICP备14008679号