基础知识系列(三):Vue3设置全局变量和地图挂载全局

1.设置全局变量的方法一

在main.js即入口文件中

const app = createApp(App);
app.config.globalProperties.$map = "map";
app.mount('#app')

在App.vue即组件文件中

import {getCurrentInstance} from 'vue'
const {proxy} = getCurrentInstance();
console.log(proxy.$map)

2.设置全局变量的方法二

在main.js中

const app = createApp(App);
app.provide("$http", "http")

在App.vue中

import {inject} from 'vue'
const $http = inject("$http");
console.log($http)

3.地图挂载全局的方法一

在main.js中

const app = createApp(App)
export const $prototype = app.config.globalProperties
app.mount('#app')

在OpenMap.vue中

import { onMounted } from "vue";
import { gaode_vector } from "../libs/gaode";
import { $prototype } from "../main";
onMounted(() => {
  const map = new ol.Map({
    target: "map",
    layers: [gaode_vector],
    view: new ol.View({
      center: [114.3, 30.5],
      zoom: 4,
      projection: "EPSG:4326",
    }),
  });
  $prototype.$map = map;
});

在OpenControl.vue中

import { onMounted, getCurrentInstance } from "vue";
onMounted(() => {
  const { proxy } = getCurrentInstance();
  console.log(proxy.$map);
});

在App.vue中

<template>
  <div>
    <open-map></open-map>
    <open-control></open-control>
  </div>
</template>

<script setup>
import OpenMap from './components/OpenMap.vue'
import OpenControl from './components/OpenControl.vue'
</script>

<style lang="scss" scoped>
</style>

4.地图挂载全局的方法二

在main.js中

export const app = createApp(App)

在OpenMap.vue中

import { onMounted } from "vue";
import { gaode_vector } from "../libs/gaode";
import {app} from '../main'
onMounted(() => {
  const map = new ol.Map({
    target: "map",
    layers: [gaode_vector],
    view: new ol.View({
      center: [114.3, 30.5],
      zoom: 4,
      projection: "EPSG:4326",
    }),
  });
  app.provide('$map',map)
});

在OpenControl.vue中

import { onMounted, inject } from "vue";
onMounted(() => {
  const $map = inject("$map")
  console.log($map.getLayers());
});

在App.vue中

<template>
  <div>
    <open-map></open-map>
    <open-control></open-control>
  </div>
</template>

<script setup>
import OpenMap from './components/OpenMap.vue'
import OpenControl from './components/OpenControl.vue'
</script>

<style lang="scss" scoped>
</style>

PS:

1.删包:git bash终端 rm -rf node_modules Linux命令

2.API:接口;SDK:软件开发包

3.将OL_SDK和libs(Libraries 的缩写)文件夹放在src文件夹下 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值