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 相关文章推荐
Vue如何循环提取对象数组中的值
Nov 18 Vue.js
用vue设计一个日历表
Dec 03 Vue.js
详解Vue中的自定义指令
Dec 07 Vue.js
vue使用element-ui实现表单验证
Dec 13 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
vue编写简单的购物车功能
Jan 08 Vue.js
Vue elementUI表单嵌套表格并对每行进行校验详解
Feb 18 Vue.js
vue实现滑动解锁功能
Mar 03 Vue.js
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 Vue.js
vue实现在data里引入相对路径
Jun 05 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
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
php实现天干地支计算器示例
2014/03/14 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
PHP7 其他修改
2021/03/09 PHP
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
js读写json文件实例代码
2014/10/21 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
浅谈python函数之作用域(python3.5)
2017/10/27 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
简单了解python列表和元组的区别
2020/05/14 Python
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
如何执行一个shell程序
2012/11/23 面试题
会计辞职信范文
2014/01/15 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
募捐倡议书
2014/04/14 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
python脚本框架webpy模板控制结构
2021/11/20 Python
MySQL优化及索引解析
2022/03/17 MySQL