首页 > 其他分享 >前端学习openLayers配合vue3(偏移动画效果,限制范围)

前端学习openLayers配合vue3(偏移动画效果,限制范围)

时间:2025-01-03 11:26:36浏览次数:1  
标签:map center import new 偏移 vue3 openLayers view

我们原来的偏移感觉比较生硬,我们来学习一下偏移的动画,先列一下这节的知识点

限制经纬度范围和缩放范围(view层)

view = new View({
    center:[114.305469,30.592876],
    zoom: 10,
    projection:'EPSG:4326',
    extent:[113.999999,30.25,114.666667,30.833333],//限制地图的范围(限制某个城市)
    //限制最大和最小的缩放级别
    minZoom:4,
    maxZoom:14
  })

经纬度的偏移动画(比如我们偏移到北京)

 // 设置北京的经纬度
  const beijing=[116.46,39.92]
  const view =map.getView()
  view.animate({
    center:beijing,
    zoom:10,
    projection:'EPSG:4356'
  })

完整代码

<script setup>
import { onMounted, reactive, ref } from "vue";
import { Map, View } from "ol";
import TileLayer from "ol/layer/Tile";
import { XYZ } from "ol/source";
import { fromLonLat } from "ol/proj";
defineProps({
  msg: String,
});
let map = reactive("");
let view = reactive("");
onMounted(() => {
  initMap();
});
let initMap = () => {
  (view = new View({
    center:[114.305469,30.592876],
    zoom: 10,
    projection:'EPSG:4326',
    extent:[113.999999,30.25,114.666667,30.833333],//限制地图的范围(限制某个城市)
    //限制最大和最小的缩放级别
    minZoom:4,
    maxZoom:14
  })),
    (map = new Map({
      target: "map", //挂载视图的容器
      layers: [
        new TileLayer({
          source: new XYZ({
            url: "http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}",
            wrapX: false,
          }),
        }), //图层
      ],

      //视图
      view: view,
    }));
};
let move = () => {
  // 设置北京的经纬度
  const beijing=[116.46,39.92]
  const view =map.getView()
  view.animate({
    center:beijing,
    zoom:10,
    projection:'EPSG:4356'
  })
};
</script>

<template>
  <div id="map">
    <div class="btns">
      <button @click="move">中心点移动到北京市</button>
    </div>
  </div>
</template>

<style scoped>
.btns {
  display: flex;
  position: fixed;
  left: 20px;
  bottom: 20px;

  z-index: 999;
}
.btns div {
  width: 100px;
  height: 40px;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
}
.read-the-docs {
  color: #888;
}
#map {
  margin: 0;
  width: 100vw;
  height: 100vh;
}
</style>

 

标签:map,center,import,new,偏移,vue3,openLayers,view
From: https://www.cnblogs.com/wcq520/p/18649688

相关文章

  • 前端学习openLayers配合vue3(图层中心点的偏移)
    有了上一步的学习,我们知道了如何创建一个地图,现在我们来尝试更改一下图层的中心点关键代码letview=map.getView();//获取视图层letcenter=view.getCenter();//表示当前中心点的位置,调增经纬度就可以进行位置的便宜,下移,左移右移也同理console.log(center);//[......
  • 前端学习openLayers配合vue3(简单的创建一个地图)
    首先搭建一个vue工程化环境,首先我们先来创建一个地图吧首先我们需要下载npmiol其次我们需要在main.js里面引入相关的cssimport'ol/ol.css'到现在我们就可以开始敲击我们的代码了,直接复制就可以展示出一个简单的地图啦,相关备注已经在代码中标注,有什么不懂的可以留言哦......
  • vue3 tsx ref dom获取方式
    在Vue3中使用TypeScript和TSX(TypeScript的JSX语法)时,获取DOM元素的方式与普通的Vue组件略有不同。Vue提供了ref和reactive等响应式API来帮助我们处理组件的状态,而当我们需要直接访问DOM节点时,我们可以使用ref。下面是一个简单的例子,展示如何在Vue3+TSX......
  • vue3 tsx 如何暴漏方法给外部,expose
    setup函数确实可以直接接收一个expose参数,通过这个参数我们可以控制哪些属性或方法暴露给父组件。这种方式在使用<scriptsetup>语法时特别有用,并且它提供了一种更直接的方法来指定要暴露的内容,而不需要使用编译器宏或者生命周期钩子。下面是一个使用setup函数的expose......
  • 【Cesium】二、vite+vue3+cesium 使用,项目中使用cesium 地图,具体步骤。快速搭建Cesium
    文章目录一、准备项目二、安装三、修改App.vue四、启动项目五、消除控件六、修改底图一、准备项目这里我已经创建好vite+vue3项目模板了,需要可以直接克隆下来,进行下面步骤。vite-commit:点击跳转GitHub二、安装下载依赖yarnaddcesiumvite-plugin-cesiumvite......
  • Openlayers零基础教程【6】geojson实现点要素
    1.geojson定义geojson数据是矢量数据,是包含地理信息的json数据,格式是以key:value的形式存在的。后缀以geojson结尾2.geojson设置一个点要素本篇内容我们主要介绍使用geojson设置一个点要素,效果如下图所示。3.实现步骤:3.1.创建geojson数据/*创建geojson数据......
  • Vue3中Proxy实现响应式系统基本逻辑实现
    constactiveEffect=newMap()//存储依赖关系//追踪依赖constsetDepsMap=(target,propKey)=>{if(!activeEffect.has(target)){activeEffect.set(target,newMap())//每个对象拥有一个属性依赖映射}constdepsMap=activeEffect.get(target);......
  • 【Vue】Vue3 项目搭建(五)
    安装环境相关参考【Vue】Vue2项目搭建(二)-H__D-博客园1、安装Nodejs环境,参考【Node.js】安装及使用 ,或者使用nvm工具安装,node版本:v20.16.0 2、安装vue脚手架,【Vue】Vue2项目搭建(二)-H__D-博客园,版本:@vue/cli5.0.8使用vue-cli创建Vue3项目1、......
  • vue3快体现在哪些方面?
    Vue3在前端开发中的“快”主要体现在以下几个方面:渲染速度快:Vue3通过优化VirtualDOM和模板编译,提升了页面渲染速度。具体而言,Vue3采用了基于模板的编译方式,将模板编译成渲染函数,消除了运行时的解析开销。此外,Vue3还引入了静态节点提升和组件级别的缓存等优化策略,这些改进使得Vu......
  • vue3为什么会使用proxy?
    Vue3选择使用Proxy作为数据响应式的核心机制,主要基于以下几个方面的原因:性能优势:与Vue2中使用的Object.defineProperty相比,Proxy在性能上具有显著优势。Object.defineProperty需要遍历对象的每个属性并逐一添加getter和setter,以实现数据的响应式。这种方式在处理大型对象或频繁......