侧边栏壁纸
博主头像
进一步,海阔天空 博主等级

进一步,海阔天空

  • 累计撰写 140 篇文章
  • 累计创建 19 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录
GIS

Vue3调用基于Leaflet二次开发的地图API

海阔天空
2022-07-14 / 0 评论 / 0 点赞 / 515 阅读 / 0 字

Leaflet有现成的Vue插件可以直接调用,但是一般情况下我们的地图库都是基于Leaflet进行了二次开发的,例如整合了自定义的图层、投影、控件等,这样之后,我们一般像百度地图一样进行部署,这时候直接用import语法导入就不行了。本文描述了如何在VUE中调用基于Leaflet进行二次开发的地图API,其实这里的调用方式就跟VUE调用百度地图API是一样的。

1.在public/index.html中加载地图API

打开public/index.html,加入我们的地图API路径。

<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>
    <!--加载我们自己的API,如果是百度地图,这里换成百度地图API的路径-->
    <script type="text/javascript" src="https://mapapi.xxx.com/api/?v=1.0"></script>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

2.修改vue.config.js文件

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  configureWebpack: {
    externals: {
      "L": "L"
    }
  }
})

注意添加的configureWebpack部分。

3.新建一个地图组件

新建一个地图组件src/components/SzMap.vue

<template>
  <div id="map">

  </div>
</template>
<script>
import L from 'L';
export default {
    name:'SzMap',
    mounted:()=>{
        let map=L.szmap('map');
        map.setView([31.30,120.58],6);
        L.control.mousePosition().addTo(map);
    }
}
</script>
<style scoped>
#map{
    width: 100vw;
    height: 100vh;
}
</style>

4.在App.vue中引用该组件

修改src/App.vue,引用该组件

<template>
  <SzMap></SzMap>
</template>

<script>
import SzMap from "./components/SzMap.vue";

export default {
  name: "App",
  props:{
    szmap:null
  },
  components: {
    SzMap,
  },
};
</script>

<style>
body,
html {
  margin: 0;
  padding: 0;
}
#app {
  margin: 0;
  padding: 0;
}
</style>
0

评论区