vite+vue3+typescript+arcgis/core创建地图并处理vscode类型推断报错

省略core介绍和esri-loader对比...

省略vite安装项目过程...

1.安装arcgis/core

npm install @arcgis/core

npm地址:https://www.npmjs.com/package/@arcgis/core

2.配置

跟着官网来就行

地址:Build with ES modules | Overview | ArcGIS Maps SDK for JavaScript 4.25 | ArcGIS Developersz

2.1package.json

"dev": "npm run copy && vite --mode development",
"build": "npm run copy && run-p type-check build-only",
"copy": "ncp ./node_modules/@arcgis/core/assets ./public/assets",

 安装一下ncp

2.2组件中引入要用的文件

import WebMap from '@arcgis/core/WebMap'
import MapView from '@arcgis/core/views/MapView'
import esriConfig from "@arcgis/core/config.js";
import BasemapToggle from '@arcgis/core/Widgets/BasemapToggle'
import Locate from '@arcgis/core/Widgets/Locate'
import Track from '@arcgis/core/widgets/Track'
import Graphic from '@arcgis/core/Graphic'
// import Symbol from "@arcgis/core/symbols/Symbol";
import SimpleMarkerSymbol from "@arcgis/core/symbols/SimpleMarkerSymbol";

主要就是前三个,后面都是用来实现官网的小栗子

 完整代码

<template>
  <div class="map-div" ref="mapDiv"></div>
</template>

<script lang="ts">
export default { name: '' }
</script>

<script setup lang="ts">
import WebMap from '@arcgis/core/WebMap'
import MapView from '@arcgis/core/views/MapView'
import esriConfig from "@arcgis/core/config.js";
import BasemapToggle from '@arcgis/core/Widgets/BasemapToggle'
import Locate from '@arcgis/core/Widgets/Locate'
import Track from '@arcgis/core/widgets/Track'
import Graphic from '@arcgis/core/Graphic'
// import Symbol from "@arcgis/core/symbols/Symbol";
import SimpleMarkerSymbol from "@arcgis/core/symbols/SimpleMarkerSymbol";

import { onMounted, ref } from 'vue'

const mapDiv = ref<HTMLDivElement>()
esriConfig.assetsPath = "/assets";
const webMap = new WebMap({
  // basemap: "arcgis-topographic"
  basemap: "arcgis-imagery"
})

const mapView = new MapView({
  map: webMap,
  center: [112, 37],
  zoom: 9,
})
// 换底图
const basemapToggle = new BasemapToggle({
  view: mapView,
  nextBasemap: "arcgis-topographic"
});
mapView.ui.add(basemapToggle, "bottom-right");
// 定位
const locate = new Locate({
  view: mapView,
  useHeadingEnabled: false,
  goToOverride: function (view, options) {
    options.target.scale = 1500;
    return view.goTo(options.target);
  }
});
// 跟踪
mapView.ui.add(locate, "top-left");
const track = new Track({
  view: mapView,
  graphic: new Graphic({

    symbol:{
      color: "green",
      type: "simple-marker",
      size: "12px",
      outline: {
        color: "#efefef",
        width: "1.5px"
      }
    }
  
  }),
  useHeadingEnabled: false
});
mapView.ui.add(track, "top-left");
onMounted(() => {
  mapView.container = mapDiv.value!
})
</script>

<style scoped lang="less">
@import "@arcgis/core/assets/esri/themes/light/main.css";

.map-div {
  padding: 0;
  margin: 0;
  height: 600px;
  width: 1000px;
}
</style>

效果图,其他的导航栏啥的是我自己写demo用的,不用管。。

官网例子地址Display your location | Overview | ArcGIS Maps SDK for JavaScript 4.25 | ArcGIS Developers

3.处理编译器爆红

2.17更新:我发现官网给了解释了,可以看下这个Autocasting

Programming patterns | Overview | ArcGIS Maps SDK for JavaScript 4.25 | ArcGIS Developers

官网例子中直接复制过来symbol那里在编译器会报红,如下图

ts类型推断说没有这些属性

 看下声明文件

 点他的read more 进去看看。。。

看到了这个SimpleMarkerSymbol类

 导入,修改下代码,用这个类就不用加type了,标红没了。。。

看下页面,点追踪,左面最下面那个按钮,跟踪到当前设备位置,点定位显示正常(就是那个绿色的点)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
创建一个Vue3 + Vite + TypeScript的项目,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Node.js和npm。 2. 打开终端或命令提示符,并进入你想要创建项目的目录。 3. 执行以下命令来创建一个新的Vue项目: ``` npm init vite@latest ``` 这将使用Vite脚手架工具来创建一个新的项目。 4. 在创建项目的过程中,你将被要求选择一个模板。选择"vue-ts"模板,这将创建一个Vue3 + TypeScript的项目。 5. 完成项目创建后,进入项目目录: ``` cd your-project-name ``` 6. 安装项目所需的依赖: ``` npm install ``` 这将安装VueViteTypeScript和其他必要的依赖。 7. 启动开发服务器: ``` npm run dev ``` 这将启动一个本地开发服务器,并在浏览器中打开你的应用程序。 现在,你已经成功创建了一个Vue3 + Vite + TypeScript的项目。你可以根据需要进行二次开发,并在App.vue文件中编写根组件。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [Vue3 + Vite2 + TypeScript4搭建企业级项目框架](https://blog.csdn.net/qq_39024950/article/details/131110151)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Vue3+Vite+TypeScript常用项目模块详解](https://blog.csdn.net/qq_43649937/article/details/131105171)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值