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 相关文章推荐
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
Vue实现简单购物车功能
Dec 13 Vue.js
vue监听滚动事件的方法
Dec 21 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
vue element和nuxt的使用技巧分享
Jan 14 Vue.js
Vue常用API、高级API的相关总结
Feb 02 Vue.js
vue脚手架项目创建步骤详解
Mar 02 Vue.js
vue实现可拖拽的dialog弹框
May 13 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
Vue 打包后相对路径的引用问题
Jun 05 Vue.js
Vue Mint UI mt-swipe的使用方式
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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
python版简单工厂模式
2017/10/16 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
HTML 5 input placeholder 属性如何完美兼任ie
2014/05/12 HTML / CSS
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
班级安全教育实施方案
2014/02/23 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
一篇文章带你复习java知识点
2021/06/28 Java/Android
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫