【vue3+ArcGIS5】web开发中的地图功能从入门到实战二:工程改造实现组件式开发

前面的开发,我们使用的是直接引入官网的插件地址链接,不能满足我们组件化开发的需要。所以需要进行适当的改造,以插件的方式作为依赖引入到我们的项目中

安装依赖

bash 复制代码
pnpm install @arcgis/core

现在最新的版本是^5.0.15

json 复制代码
{
  "name": "arcgis-demo",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "copy": "npx ncp ./node_modules/@arcgis/core/assets ./public/assets"
  },
  "dependencies": {
    "@arcgis/core": "^5.0.15",
    "vue": "^3.5.30"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^6.0.5",
    "vite": "^8.0.1"
  }
}

一定要在官网申请自己的账户,需要输入自己账号密码才能正常的显示

项目改造

  1. main.js
js 复制代码
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'

import esriConfig from "@arcgis/core/config";
esriConfig.assetsPath = "./assets";
esriConfig.apiKey ="自己key值"
import '@arcgis/core/assets/esri/themes/light/main.css';

createApp(App).mount('#app')

esriConfig这里的配置是因为网络的原因,我们使用本地的资源来显示,加速开发

  1. 把node_modules里面的@argis资源copy到我们项目的public文件里面

3.配置cop命令

bash 复制代码
"copy": "npx ncp ./node_modules/@arcgis/core/assets ./public/assets"
  1. 新建一个second.vue组件,填入一下的内容
html 复制代码
<script setup>
    import Map from '@arcgis/core/Map'
    import MapView from '@arcgis/core/views/MapView'
    import { onMounted, ref } from 'vue';
    let view;
    const mapDiv = ref(null)

    const initArcGisMap = () => {
        const map = new Map({
            basemap: 'arcgis/topographic', // 使用矢量底图,减少图层加载
        });

        view = new MapView({
            center: [-118.805, 34.020],
            zoom: 4,
            container: mapDiv.value,
            map: map
        });
        view.ui.components = [];

         // 监听视图错误
        view.when(
            () => {
            console.log('地图加载成功')
            },
            (error) => {
            console.error('地图加载失败:', error)
            }
        )
        
    }
    onMounted(() => {
        initArcGisMap();
    })
</script>

<template>
    <h2>ArcGIS Maps SDK for JavaScript Tutorials: Display a map222</h2>
    <div id="container">
        <div ref="mapDiv" class="map-div"></div>
    </div>
</template>

<style>
   #container {
      height: 100%;
      margin: 0;
    }
    .map-div {
        height: 100%;
    }

</style>

这样地图就加载成功了

相关推荐
冒险的豆子1 天前
Vue2 、Vue3 响应式对比及优劣
vue
NetX行者2 天前
用 Vite + Vue3 + UnoCSS 搭建企业级项目模板(一):基础骨架
vue·vite·unocss
java水泥工2 天前
什么是前端
java·vue·html5
mont evergreen3 天前
一封从外部世界寄来的信:二维码数据如何穿越三重门,抵达你的屏幕
electron·vue·事件
志尊宝4 天前
Vue3 零基础每日笔记(071):暗黑模式与主题切换——CSS 变量 + Element Plus 暗黑方案
前端·css·笔记·vue·html·前端开发·软件开发
怦然丶心动4 天前
用 Java 把干支历法算清楚:从节气切年到可读摘要
java·算法·vue·独立开发·spring boot / spring
我最爱吃鱼香茄子7 天前
【毕业设计优选】人力资源管理系统|Java|SpringBoot|Vue|前后端分离|带详细文档+部署教学视频
java·vue·毕业设计·springboot
骑着蜗牛撵大象3278 天前
SpringBoot+Vue3 企业智能体侧挂架构:独立服务、独立数据库与主线零侵入落地
数据库·spring boot·架构·vue·springboot·事件驱动·服务拆分
码艺-Alimjan9 天前
Tauri 网站To桌面应用实战总结
前端·javascript·vue
liangshiwei12 天前
ABP x Vue:介绍 ABP Vue UI
vue·abp