vue+openlayers绘制省市边界线


Posted in Vue.js onDecember 24, 2020

本文实例为大家分享了vue+openlayers绘制省市边界线的具体代码,供大家参考,具体内容如下

vue+openlayers绘制省市边界线

1、创建项目

vue init webpack ol_vue

vue+openlayers绘制省市边界线

2、安装ol依赖包

npm install ol

3、引入axios

npm install axios --save

文件目录:src/main.js

import Vue from 'vue'
import router from './router'
import App from './App'
import axios from "axios";

//添加实例属性:不想污染全局作用域,在原型上定义它们使其在每个 Vue 的实例中可用。prototype向对象添加属性和方法。
// $ 是在 Vue 所有实例中都可用的属性的一个简单约定。
Vue.prototype.$axios = axios
//阻止启动生产消息。
Vue.config.productionTip = false

//开启debug模式
//Vue.config.debug = true

//禁用ESLint进行检测
/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 components: { App },
 template: '<App/>'
})

4、api

文件目录:static/js/api.js

const host = 'https://api.obtdata.com/';

export default {
 'searchcity': host + 'standard/searchcity'
}

5、实现代码

<template>
 <div>
  <div id="map"></div>
 </div>
</template>

<script>
 import Map from 'ol/Map'
 import View from 'ol/View'
 import TileLayer from 'ol/layer/Tile'
 import GeoJSON from 'ol/format/geoJson'
 import Feature from 'ol/Feature'
 import vectorLayer from 'ol/layer/Vector'
 import SourceVector from 'ol/source/Vector'
 import {Style,Stroke} from 'ol/style'
 import OSM from 'ol/source/OSM'
 import {fromLonLat} from 'ol/proj.js'
 import api from '../static/js/api'

 export default {
  name: "app",
  data () {
   return {
    map: null,
    source:null,
    resData:null,
    vector: null
   }
  },
  mounted () {
   //ol.source.Vector,提供矢量图层数据
   var source = new SourceVector({
    wrapX: false,
    code: 'EPSG:4326',
   });
   //ol.layer.Vector用于显示在客户端渲染的矢量数据。
   this.vector = new vectorLayer({
    source: source,
   });

   this.map = new Map({
    target: 'map',
    layers: [
     new TileLayer({
      source: new OSM()
     }),
     this.vector
    ],
    view: new View({
     center: fromLonLat([110.850881285943,30.1253920380122]),//湖南省
     zoom: 5
    })
   });

   this.searchCity()

  },
  methods:{
   searchCity() {
    //axios获取数据
    this.$axios
     .get(api.searchcity, {
      params: {
       code: '43'
      }
     })
     .then((res) => {
      this.resData = res.data.geom;
      //console.log(this.resData)

      //ol.format.GeoJSON:以GeoJSON格式读取和写入数据
      //readGeometry (source,opt_options)阅读几何图形
      //dataProjection投影我们正在阅读的数据
      //featureProjection投影格式阅读器创建的要素几何
      var geom=(new GeoJSON()).readGeometry(this.resData,{
       dataProjection:'EPSG:4326',
       featureProjection:'EPSG:3857'
      });
      //ol.Feature具有几何和其他属性属性的地理要素的矢量对象
      var feature=new Feature(geom);
      //ol.source.Vector提供矢量图层的要素源
      //features特征。如果提供为module:ol/Collection,则源和集合中的功能将保持同步。
      //wrapX水平包裹世界。对于横跨-180°和180°子午线的矢量编辑以正常工作,应将其设置为false。
      var source=new SourceVector({
       features:[feature],
       wrapX:false
      });

      //getFeatures以随机顺序获取源上的所有功能。
      //getGeometry获取要素的默认几何体。
      var polygons=(source.getFeatures()[0].getGeometry());
      var size=(this.map.getSize());
      //addFeature向源添加单个功能。
      this.vector.getSource().addFeature(feature);
      //fit(geometryOrExtent,opt_options)根据给定的地图大小和边框拟合给定的几何或范围。
      this.map.getView().fit(polygons,size);

     })
   }

  }
 }
</script>

<style scoped>

</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
vue动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
vue 通过base64实现图片下载功能
Dec 19 Vue.js
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
使用Vue.js和MJML创建响应式电子邮件
Mar 23 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
Vue中插槽slot的使用方法与应用场景详析
Jun 08 Vue.js
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
vue项目中openlayers绘制行政区划
Dec 24 #Vue.js
Vue+penlayers实现多边形绘制及展示
Dec 24 #Vue.js
Vue使用鼠标在Canvas上绘制矩形
Dec 24 #Vue.js
vue绑定class的三种方法
Dec 24 #Vue.js
全面解析Vue中的$nextTick
Dec 24 #Vue.js
vue实现登录、注册、退出、跳转等功能
Dec 23 #Vue.js
vue下拉刷新组件的开发及slot的使用详解
Dec 23 #Vue.js
You might like
php实现的简单美国商品税计算函数
2015/07/13 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
Python中shape计算矩阵的方法示例
2017/04/21 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
Python 创建TCP服务器的方法
2020/07/28 Python
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
美容院员工规章制度
2015/08/05 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs