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+Element实现增删改查的示例源码
Nov 23 Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
Vue仿百度搜索功能
Dec 28 Vue.js
如何使用RoughViz可视化Vue.js中的草绘图表
Jan 30 Vue.js
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
vue实现锚点定位功能
Jun 29 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
详解Vue的列表渲染
Nov 20 Vue.js
vue特效之翻牌动画
Apr 20 Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 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
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
php购物车实现代码
2011/10/10 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
Vue组件化开发思考
2018/02/02 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
Python的迭代器和生成器使用实例
2015/01/14 Python
仅利用30行Python代码来展示X算法
2015/04/01 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
营销与策划专业毕业生求职信
2013/11/01 职场文书
小区门卫工作职责
2013/12/14 职场文书
写自荐信要注意什么
2013/12/26 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
汽车车尾标语大全
2015/08/11 职场文书
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android