openlayers+vue初学注意点

当我们使用 vue 开发 openplayers 的时候,总是会下意识的使用 ref 来代理openplays 中的 变量, 这种方法是不可取的, 很容易发生我们想不到的错误

下面看一段我最初写的,理论正确,但实际用不了的代码

javascript 复制代码
<script setup>
import {onMounted, ref} from 'vue'
import Map from "ol/Map"
import TileLayer from "ol/layer/Tile.js";
import XYZ from "ol/source/XYZ.js";
import View from "ol/View.js";
import {fromLonLat} from 'ol/proj.js';

const map = ref(null);
const mapRef = ref(null)

const layer1 = ref(null);
const layer2 = ref(null);

onMounted(() => {

  layer1.value = new TileLayer({
    source: new XYZ({
      url: "https://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}"
    })
  })

  layer2.value = new TileLayer({
    source: new XYZ({
      url: "https://webst01.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}"
    })
  });
  map.value = new Map({
    target: mapRef.value,
    layers: [layer1.value, layer2.value],
    view: new View({
      center: fromLonLat([114.31, 30.52]),
      zoom: 10,
      projection: "EPSG:3857"
    })
  })

})


const removeBJ = () => {
  map.value.removeLayer(layer2.value);
}


</script>

<template>
  <div class="button">
    <!--    <button @click="gotoBJ">跳转到北京</button>-->
    <button @click="removeBJ">remove</button>
  </div>
  <div ref="mapRef" id="map"></div>
</template>

<style scoped>
#map {
  width: 100vw;
  height: 100vh;
}
</style>


所以, 我们在使用 vue+openlayers 的时候,对openlayer 中的对象尽量不要去用 ref来定义

相关推荐
因_崔斯汀2 小时前
ECharts 区域地图可视化实战:以山东地图为例
前端
Bacon2 小时前
手摸手带你搞清楚 AI Agent 的六大核心概念
前端·人工智能
xier1234562 小时前
three-instance-batch 开发笔记
javascript·three.js
王林不想说话2 小时前
TypeScript 进阶知识总结:从 extends、泛型到 infer,一篇打通 TS 类型系统
前端·javascript·typescript
卤蛋fg62 小时前
vxe-table 实现数据分组统计与表尾合计
vue.js
罗超驿2 小时前
15.JavaScript 函数与作用域完全指南:语法、参数、表达式与作用域链实战
开发语言·前端·javascript
.千余2 小时前
【C++】C++类与对象2:C++构造函数、运算符重载与流输入输出全面解析
c语言·开发语言·前端·c++·经验分享
一念&2 小时前
油猴脚本教程——元数据块
javascript·浏览器·脚本·油猴
星栈3 小时前
Rust 单二进制部署,真没你想的那么“单”
前端·后端
angerdream3 小时前
Android手把手编写儿童手机远程监控App之webrtc聊天数据通道
前端