vue利用openlayers加载天地图和高德地图

目录
  • 一、天地图部分
    • 1、在vue中安装openlayers
  • 二、高德地图部分

一、天地图部分

1、在vue中安装openlayers

npm i --save ol

这里说的vue是基于脚手架构建的。 新建个页面,也就是vue文件,配置好路由。接着就是可以直接放入我的代码运行显示了。

<template>

  <div class="wrapper">

    <div>天地图</div>

    <div class="map" id="olMap"></div>

  </div>

</template>

<script>

import "ol/ol.css";

import {

  Tile as TileLayer } from "ol/layer";

import XYZ from "ol/source/XYZ";

import {

  defaults as defaultControls } from "ol/control";

import Map from "ol/Map.js";

import View from "ol/View.js";
export default {

  data() {
   return {

      map: null,

      parser: null,

    };

  },

  mounted() {
    this.initMap();

  },

  methods: {

    initMap() {

     const map = new Map({
       target: "olMap",

        view: new View({

          center: [0, 0], //中心点经纬度

          zoom: 4, //图层缩放大小

          projection: "EPSG:4326",

        }),

        controls: defaultControls({
          zoom: true,

          attribution: false,

          rotate: false,

        }),

      });

      this.map = map;

      // 添加地图

      let url = "http://t{0-7}.tianditu.com/DataServer?x={x}&y={y}&l={z}";

      url = `${

   url}&T=vec_c&tk=替代你的key`;

      const source = new XYZ({
     url: url,

        projection: "EPSG:4326",

      });

      const tdtLayer = new TileLayer({

        source: source,

      });

      this.map.addLayer(tdtLayer);

      // 添加注记

      url = "http://t{0-7}.tianditu.com/DataServer?x={x}&y={y}&l={z}";

      url = `${

   url}&T=cva_c&tk=替代你的key`;

      const sourceCVA = new XYZ({
        url: url,

        projection: "EPSG:4326",

      });

      const tdtcvaLayer = new TileLayer({

        source: sourceCVA,

      });

      this.map.addLayer(tdtcvaLayer);

    },

  },

};

</script>
<style scoped>

.map {

  width: 100%;

  height: 100vh;

}

</style>

天地图就可以显示出来了。

效果图:

二、高德地图部分

相对于天地图,高德地图就容易多了,直接上代码

<template>

  <div class="wrapper">

    <div>高德地图</div>

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

  </div>

</template>
<script>

import {

 Map,View,Feature} from 'ol'

import * as olProj from 'ol/proj'

import {

 Point} from 'ol/geom'

import {

  Style, Fill, Stroke, Circle as sCircle } from "ol/style";

// 添加图层

import Tilelayer from 'ol/layer/Tile'

import {

 Vector as VectorLayer} from 'ol/layer'

import {

 XYZ,Vector as VectorSource} from 'ol/source'

//引入样式文件

import "ol/ol.css"
export default {
  data() {

  return {
    map:null

    }

  },

  mounted() {

  this.init();

   this.setMarker();

  },

  methods: {

    init(){

       this.map=new Map({

         target:'map',

         layers:[new Tilelayer({

           source: new XYZ({

               url:'https://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}',

           })

         })

         ],

        view:new View({

            // 将西安作为地图中心 

            // olProj.fromLonLat方法将经纬度转换成对应的坐标

          center:olProj.fromLonLat([108.945951, 34.465262]),

          zoom:2

        }),

       })

    },

    setMarker(){

        let _style = new Style({

            image:new sCircle({

                radius:10,

                stroke:new Stroke({

                    color:"#fff",

                }),

                fill: new Fill({

                    color:'#3399CC',

                }),

            }),

        });

        let _feature = new Feature({

            geometry:new Point(olProj.fromLonLat([108.945951, 34.465262])),

        });

        _feature.setStyle(_style);

        let _marker = new VectorLayer({

            source: new VectorSource({

               feature:[_feature],

            }),

        });

        this.map.addLayer(_marker);

    },

  },

}

</script>

<style scoped>

  #map{

      /* 屏幕宽高 */

    width: 100vw;

    height: 100vh;

  }

</style>

到此这篇关于 vue利用openlayers加载天地图和高德地图的文章就介绍到这了,更多相关openlayers加载天地图和高德地图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue项目中openlayers绘制行政区划

    vue项目中openlayers画行政区划(区域范围),供大家参考,具体内容如下 原理 在地图上画需要的范围,实际上就是在地图上打上一圈点,然后依次将这些点用线连接,就形成了范围 引用相应的ol模块 import VectorLayer from 'ol/layer/Vector' import VectorSource from 'ol/source/Vector' import { Map, View, Feature } from 'ol' import { Style, Icon, St

  • vue集成openlayers加载geojson并实现点击弹窗教程

    本文实例为大家分享了vue+openlayers加载geojson并实现点击弹窗教程,供大家参考,具体内容如下 第一步:安装vue-cli cnpm install -g @vue/cli 第二步:新建一个项目 1.新建项目 (vue-openlayers为项目名),并选择default模版 vue create vue-openlayers 2.安装openlayers cnpm i -S ol 第三步:写业务代码 1.删除掉HelloWorld.vue 新建 olmap.vue组件 comp

  • vue使用openlayers实现移动点动画

    本文实例为大家分享了vue使用openlayers实现移动点动画的具体代码,供大家参考,具体内容如下 做项目时,本来打算仿照官网的Example中动画制作,引入vue中后,发现它引用的库函数一直报错,最后我去vue中安装的依赖库中去查找这个函数,果然没有.也就是说官方例子使用的库和我安装的OL库存在一定差异. 后来我还是用笨方法去解决了,最终效果如下: 总体思路是将移动目标实例一个Overlay对象,然后将如图5个经纬度点没两点之间分割成多个(200个),之后通过定时器不断setPositon.

  • Vue+Openlayers自定义轨迹动画

    本文实例为大家分享了Vue+Openlayers实现轨迹动画的具体代码,供大家参考,具体内容如下 <template> <div class="map-warp"> <h3> <a href="https://openlayers.org/en/latest/examples/feature-move-animation.html?q=polyline" target="_bank" >Openla

  • Vue + OpenLayers 快速入门学习教程

    Openlayers 是一个模块化.高性能并且功能丰富的WebGIS客户端的JavaScript包,用于显示地图及空间数据,并与之进行交互,具有灵活的扩展机制. 简单来说,使用 Openlayers(后面简称ol) 可以很灵活自由的做出各种地图和空间数据的展示.而且这个框架是完全免费和开源的. 前言 本文记录 Vue 使用 OpenLayers 入门,使用 OpenLayers 创建地图组件,分别使用 OpenLayers 提供的地图和本地图片做为地图. Overview OpenLayers

  • vue-openlayers实现地图坐标弹框效果

    本文实例为大家分享了vue-openlayers实现地图坐标弹框的具体代码,供大家参考,具体内容如下 openlayers 这个效果是点击地图,弹出坐标信息. 点击地图边缘时,底图会跟着移动,使弹窗能完整显示出来. <template> <div class="vm"> <h2 class="h-title">弹窗 popup</h2> <div id="map" class="ma

  • VUE + OPENLAYERS实现实时定位功能

    前言 本系列文章介绍一个简单的实时定位示例,示例的组成主要包括: 服务后端,使用 Java 语言编写,模拟生成 GeoJSON 数据. 前端展示,使用 Vue + OpenLayers ,负责定时向后端服务请求 GeoJSON 数据,并在以标签的形式展现定位数据. 实现的效果: 一.定义标签样式 var image = new CircleStyle({ radius: 5, fill: new Fill({ color: "rgba(255, 0, 0, 1)" }), stroke

  • vue+openlayers绘制省市边界线

    本文实例为大家分享了vue+openlayers绘制省市边界线的具体代码,供大家参考,具体内容如下 1.创建项目 vue init webpack ol_vue 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 fro

  • vue利用openlayers加载天地图和高德地图

    目录 一.天地图部分 1.在vue中安装openlayers 二.高德地图部分 一.天地图部分 1.在vue中安装openlayers npm i --save ol 这里说的vue是基于脚手架构建的. 新建个页面,也就是vue文件,配置好路由.接着就是可以直接放入我的代码运行显示了. <template> <div class="wrapper"> <div>天地图</div> <div class="map"

  • Vue利用openlayers实现点击弹窗的方法详解

    目录 解释 编写弹窗 引入 openlayer使用弹窗组件 点击事件 这个写的稍微简单一点就行了,其实呢,这个不是很难,主要是知道原理就可以了. 我想实现的内容是什么意思呢?就是说页面上有很多坐标点,点击坐标点的时候在相应的位置弹出一个框,然后框里显示出这个坐标点的相关数据. 解释 这个内容的其实就是添加一个弹窗图层,然后在点击的时候让他显示出来罢了. 编写弹窗 首先一点,我们这个弹窗需要自己写一下,具体的样式,展示的内容之类的,所以说写一个弹窗组件,然后在openlayer文件中引用加载. 比

  • vue利用openlayers实现动态轨迹

    目录 实现效果 创建一个地图容器 引入地图相关对象 创建地图对象 创建一条线路 画一条线路 添加起.终点 添加小车 准备开车 完整代码 实现效果 今天介绍一个有趣的gis小功能:动态轨迹播放!效果就像这样: 这效果看着还很丝滑!别急,接下来教你怎么实现.代码示例基于parcel打包工具和es6语法,本文假设你已经掌握相关知识和技巧. gis初学者可能对openlayers(后面简称ol)不熟悉,这里暂时不介绍ol了,直接上代码,先体验下感觉. 创建一个地图容器 引入地图相关对象 import M

  • vue如何动态加载组件详解

    目录 使用场景: 需要动态导入组件的页面 核心组件的代码: 使用场景: 总结 使用场景: 项目中需要我们根据不同的业务需求呈现不同的业务场景,如果业务类型简单还好,直接全部引入判断即可,但随着我们代码的沉积,项目将会变得很难维护,这时候我们可以使用动态引入组件的方式来避免这个问题,首先第一步实现就是,在vue中,我们如何动态引入组件? 话不多说,直接上干货 需要动态导入组件的页面 在这个页面引入我们的组件Test <template> <div> <Test :data=&q

  • 如何利用预加载优化Laravel Model查询详解

    前言 本文主要给大家介绍了关于利用预加载优化Laravel Model查询的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍: 介绍 对象关系映射(ORM)使数据库的工作变得非常简单. 在以面向对象的方式定义数据库关系时,可以轻松查询相关的模型数据,开发人员可能不会注意底层数据库调用. 下面将通过一些例子,进一步帮助您了解如何优化查询. 假设您从数据库收到了100个对象,并且每个记录都有1个关联模型(即belongsTo). 默认使用ORM将产生101个查询; 如下所示: //

  • Android中利用动态加载实现手机淘宝的节日特效

    相信去年圣诞节打开过手机淘宝的童鞋都会对当时的特效记忆犹新吧:全屏飘雪,旁边还有个小雪人来控制八音盒背景音乐的播放,让人有种身临其境的感觉,甚至忍不住想狠狠购物了呢(误),大概就是下面这个样子滴: 嗯,确实很炫,那么我们一步步去分析是如何实现的: 一.实现下雪的 View 首先,最上面一层的全屏雪花极有可能是一个顶层的View,而这个View是通过动态加载去控制显示的(不更新淘宝也能看到这个效果).那么我们先得实现雪花效果的 View,人生苦短,拿来就用.打开 gank.io,搜索"雪花&quo

  • vue 项目常用加载器及配置详解

    本文介绍了vue 项目常用加载器及配置详解,分享给大家,具体如下: 1.安装sass: 1.1 由于sass-loader依赖于node-sass,所以在安装sass-loader的同时还需安装node-sass npm install --save-dev node-sass npm install --save-dev sass-loader 1.2 安装完成后修改 <style>标签: <style lang="scss"></style> 2

  • vue中v-for加载本地静态图片方法

    vue-cli 项目中本地图片放在assets目录下(原因vue-cli最开始的vue图片就在里面,就把所有图片放在里面了): 之后v-for 动态加载图片路径就遇到了问题 源码: <ul> <li v-for="(item,index) in teamInfo" @click="trastFun(item)"> <div><img v-bind:src="item.imageurl"/></

  • Vue SSR 组件加载问题

    Node 端渲染提示 window/document 没有定义 业务场景 首先来看一个简单的 Vue 组件 test.vue <template> <div> <h2>clientHeight: {{ clientHeight }} px </h2> </div> </template> <script type="text/babel"> export default { data(){ return

随机推荐