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 相关文章推荐
如何正确解决VuePress本地访问出现资源报错404的问题
Dec 03 Vue.js
浅析vue中的nextTick
Dec 28 Vue.js
基于VUE实现简单的学生信息管理系统
Jan 13 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
Vue通过懒加载提升页面响应速度
May 10 Vue.js
详解vue身份认证管理和租户管理
May 25 Vue.js
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
如何优化vue打包文件过大
Apr 13 Vue.js
Vue3实现简易音乐播放器组件
Aug 14 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中10个不常见却非常有用的函数
2010/03/21 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
2014/07/15 PHP
PHP使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
用jscript实现列出安装的软件列表
2007/06/18 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
jquery实现动态画圆
2014/12/04 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
深入理解python try异常处理机制
2016/06/01 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
解决nohup重定向python输出到文件不成功的问题
2018/05/11 Python
python3使用GUI统计代码量
2019/09/18 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
video.js支持m3u8格式直播的实现示例
2020/05/20 HTML / CSS
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
小学评语大全
2014/04/22 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
学生保证书
2015/01/16 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS