最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Openlayers實現(xiàn)圖形繪制

 更新時間:2020年09月28日 11:46:30   作者:桃李不言_下自成蹊  
這篇文章主要為大家詳細介紹了Openlayers實現(xiàn)圖形繪制,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Openlayers實現(xiàn)圖形繪制的具體代碼,供大家參考,具體內(nèi)容如下

1、新建一個html頁面,引入ol.js文件,然后在body中創(chuàng)建一個div標簽、label標簽和一個select下拉選項卡;

2、代碼實現(xiàn)

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title></title>
 <script src="../lib/ol/ol.js"></script>
 <script type="text/javascript">
 window.onload = function () {
  //獲取下拉列表框
  var typeSelect = document.getElementById('type');
  //定義一個用來接收繪制對象的對象,方便以后對繪制對象進行添加、移除等操作
  var draw;
 
  //初始化地圖對象
  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: 3
  })
  });
 
  //初始化矢量數(shù)據(jù)源對象
  //wrapX:Wrap the world horizontally. Default is true. 
  //For vector editing across the -180° and 180° meridians to work properly, this should be set to false
  var source = new ol.source.Vector({ wrapX: false });
  //實例化矢量數(shù)據(jù)圖層
  var vector = new ol.layer.Vector({
  //數(shù)據(jù)源
  source: source,
  //樣式
  style: new ol.style.Style({
   //樣式填充
   fill: new ol.style.Fill({
   //填充顏色
   color: 'rgba(37,241,239,0.2)'
   }),
   //筆觸
   stroke: new ol.style.Stroke({
   //筆觸顏色
   color: '#264df6',
   //筆觸寬度
   width:2
   }),
   //圖形樣式,主要適用于點樣式
   image: new ol.style.Circle({
   //半徑大小
   radius: 7,
   //填充
   fill: new ol.style.Fill({
    //填充顏色
    color: '#e81818'
   })
   })
  })
  });
 
  //將矢量圖層加載到map中
  map.addLayer(vector);
 
  //添加繪圖交互的函數(shù)
  function addInteraction() {
  //獲取當前選擇的繪圖類型
  var value = typeSelect.value;
  //如果當前選擇的繪圖類型不為"None"的話,則進行相應繪圖操作
  //如果當前選擇的繪圖類型為"None"的話,則清空矢量數(shù)據(jù)源
  if (value !== 'None') {
   //如果當前的矢量數(shù)據(jù)源為空的話,則重新創(chuàng)建和設(shè)置數(shù)據(jù)源
   //因為當你選擇的繪圖類型為"None"時,會清空數(shù)據(jù)源
   if (source == null) {
   source = new ol.source.Vector({ wrapX: false });
   vector.setSource(source);
   }
   //geometryFunction變量,用來存儲繪制圖形時的回調(diào)函數(shù)
   //maxPoints變量,用來存儲最大的點數(shù)量
   var geometryFunction, maxPoints;
   //如果當前選擇的繪圖類型是"Square"的話,則將value設(shè)置為Circle
   //然后調(diào)用createRegularPolygon()方法
   if (value === 'Square') {
   value = 'Circle';
   //Create a geometryFunction for type: 'Circle' 
   //that will create a regular polygon with a user specified number of sides and start angle instead of an ol.geom.
   //根據(jù)圓來創(chuàng)建一個四邊形
   geometryFunction = ol.interaction.Draw.createRegularPolygon(4);
   } else if (value === 'Rectangle') {
   //如果當前選擇的繪圖類型是"Square"的話,則將value設(shè)置為LineString
   value = 'LineString';
   //設(shè)置最大點數(shù)為2
   maxPoints = 2;
   geometryFunction = function (coordinates, geometry) {
    //如果geometry對象不存在或者為空,則創(chuàng)建
    if (!geometry) {
    geometry = new ol.geom.Polygon(null);
    }
    //開始點的坐標
    var start = coordinates[0];
    //結(jié)束點的坐標
    var end = coordinates[1];
    //根據(jù)開始坐標和結(jié)束坐標設(shè)置繪圖點坐標
    geometry.setCoordinates([
    [start, [start[0], end[1]], end, [end[0], start[1]], start]
    ]);
    return geometry;
   };
   }
 
   //將交互繪圖對象賦給draw對象
   //初始化交互繪圖對象
   draw = new ol.interaction.Draw({
   //數(shù)據(jù)源
   source: source,
   //繪制類型
   type: value,
   //回調(diào)函數(shù)
   //Function that is called when a geometry's coordinates are updated
   geometryFunction: geometryFunction,
   //最大點數(shù)
   maxPoints: maxPoints
   });
   //將draw對象添加到map中,然后就可以進行圖形繪制了
   map.addInteraction(draw);
  } else {
   //清空矢量數(shù)據(jù)源
   source = null;
   //設(shè)置矢量圖層的數(shù)據(jù)源為空
   vector.setSource(source);
  }
  }
 
  //當繪制類型下拉列表框的選項發(fā)生改變時執(zhí)行
  typeSelect.onchange = function (e) {
  //從map中移除交互繪圖對象
  //如果不移除,則會在下拉列表框選項發(fā)生改變時再次進行繪制時,保留上一次的draw對象
  map.removeInteraction(draw);
  //執(zhí)行添加繪圖交互的函數(shù)
  addInteraction();
  };
  //添加繪圖交互的函數(shù)
  //此處是為保證刷新頁面后,仍然能夠根據(jù)下拉列表框框的選項進行圖形繪制
  addInteraction();
 };
 </script>
</head>
<body>
 <div id="menu">
 <label>幾何圖形繪制:</label>
 <select id="type">
  <option value="None">無</option>
  <option value="Point">點</option>
  <option value="LineString">線</option>
  <option value="Polygon">多邊形</option>
  <option value="Circle">圓</option>
  <option value="Square">正方形</option>
  <option value="Rectangle">長方形</option>
 </select>
 </div>
 <div id="map"></div>
</body>
</html>

3、結(jié)果展示

繪制點圖形

繪制線圖形

繪制多邊形

繪制圓形

繪制正方形

繪制矩形

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript之IE的fireEvent方法詳細解析

    JavaScript之IE的fireEvent方法詳細解析

    剛開始我以為是會跟平時使用onclick()一樣,沒想到最近在寫javascript入門ppt的時候發(fā)現(xiàn)了,原來自己太自以為是了!看來還有很多javascript的細節(jié)沒有掌握好啊
    2013-11-11
  • js 去掉空格實例 Trim() LTrim() RTrim()

    js 去掉空格實例 Trim() LTrim() RTrim()

    js 去掉空格實例Trim(),LTrim(),RTrim() 需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • 詳解JavaScript數(shù)組的常用方法

    詳解JavaScript數(shù)組的常用方法

    這篇文章主要為大家介紹了JavaScript數(shù)組的常用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • JS中模糊查詢功能的一些常用方法

    JS中模糊查詢功能的一些常用方法

    在前端開發(fā)中,模糊查詢與下拉匹配是提高用戶體驗的重要功能,特別是在搜索功能上,這篇文章主要給大家介紹了關(guān)于JS中模糊查詢功能的一些常用方法,需要的朋友可以參考下
    2024-06-06
  • 微信小程序計算器實現(xiàn)案例詳解

    微信小程序計算器實現(xiàn)案例詳解

    最近繼續(xù)玩一些微信小程序的api來做例子,感覺自己可能創(chuàng)造力不很足,只能模仿著別人的例子來做一個自己的計算器了,下面這篇文章主要給大家介紹了關(guān)于微信小程序計算器實現(xiàn)案例的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • ng-options和ng-checked在表單中的高級運用(推薦)

    ng-options和ng-checked在表單中的高級運用(推薦)

    AngularJS是當前非常的流行的前端框架,它的語法糖非常多,也極大的方便了前端開發(fā)者。這篇文章主要介紹了ng-options和ng-checked在表單中的高級運用,需要的朋友可以參考下
    2017-01-01
  • js根據(jù)后綴判斷文件文件類型的代碼

    js根據(jù)后綴判斷文件文件類型的代碼

    這篇文章主要介紹了js根據(jù)后綴判斷文件文件類型的代碼,原來是獲取文件的擴展名然后再判斷屬于什么類型,對于圖片多個后綴的判斷的實現(xiàn)也不是不錯的思路,大家可以參考一下
    2020-05-05
  • javascript特殊日歷控件分享

    javascript特殊日歷控件分享

    這篇文章主要為大家詳細介紹了javascript特殊日歷控件的使用方法,展示了javascript日歷控件實現(xiàn)效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • JavaScript中的Promise詳解

    JavaScript中的Promise詳解

    現(xiàn)在網(wǎng)上有非常多的Promise文章,但都是給你一堆代碼,或者某些核心代碼,讓你看完之后感覺,嗯,很厲害,但還是不知所云,不知其所以然。那么本文真正從一個小白開始帶你深入淺出,一步一步實現(xiàn)自己的 Promise,這種自己造輪子的過程一定是進步最快的過程,快上車開始吧
    2022-11-11
  • 詳解webpack import()動態(tài)加載模塊踩坑

    詳解webpack import()動態(tài)加載模塊踩坑

    這篇文章主要介紹了詳解webpack import()動態(tài)加載模塊踩坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07

最新評論

慈利县| 尚志市| 五莲县| 和硕县| 长海县| 泸西县| 曲阜市| 锡林浩特市| 福州市| 涞水县| 德化县| 彰化市| 湘潭市| 永善县| 嘉善县| 怀集县| 墨竹工卡县| 汕头市| 佛山市| 吴川市| 云梦县| 连云港市| 治县。| 合阳县| 新干县| 闽清县| 台南市| 盐亭县| 阳西县| 汤阴县| 岫岩| 井陉县| 天祝| 西城区| 顺义区| 句容市| 衡山县| 广汉市| 麻阳| 杭锦旗| 平度市|