ArcGIS API for JS 4.x + Vue 【1】—— 显示地图和添加点线面

系列文章目录

【1】 ArcGIS API for JS 4.x + Vue 之 显示地图和添加点线面



前言

提示:这里可以添加本文要记录的大概内容:
本文介绍的是ArcGIS API for JS 4.x版本在Vue上的使用,且假设阅读者对Vue有一定的了解。

1.假设VScode、nodejs等已经安装好了;

2.全局安装vue-cli,vue-cli可以帮助我们快速构建Vue项目;

3.安装webpack,它是打包js的工具;

4.创建Vue项目。


提示:以下是本篇文章正文内容,下面案例可供参考

一、显示地图

安装依赖

从 ArcGIS API for JavaScript v4.18 开始,您可以尝试安装@arcgis/core并使用 ES 模块进行构建, 而不是使用 esri-loader。

npm install @arcgis/core --save

1. 添加模块

import Map from "@arcgis/core/Map";
import MapView from "@arcgis/core/views/MapView";
import esriConfig from "@arcgis/core/config";

2. 引入CSS样式

@import "https://js.arcgis.com/4.22/@arcgis/core/assets/esri/themes/dark/main.css";

若要在本地导入样式可查看官方文档

3. 获取密钥

一个API 密钥是访问ArcGIS 服务所必需的。

  1. 转到你的开发人员仪表板以获取API 密钥.
  2. 复制密钥,因为它将在下一步中使用。

若没有ArcGIS账号,直接在跳转页面注册即可。(注意不要使用企鹅邮箱,如果emit长时间转圈需要搭梯子)

4. 创建地图

使用一个Map设置底图图层并应用API 密钥。

esriConfig.apiKey = '你的API密钥'
// 创建地图
const map = new Map({
  basemap: "arcgis-topographic" // 底图图层
})

5. 创建地图视图

使用一个MapView类来设置要显示的地图位置。

// 创建地图视图
const view = new MapView({
  map: map,
  center: [-118.805, 34.027], // 地图中心点经纬度
  zoom: 13, // 缩放等级
  container: "viewDiv" // 地图容器id
})

参考例子

示例图:
在这里插入图片描述

代码如下(示例):

<template>
  <div id="viewDiv">
    
  </div>
</template>

<script>
import Map from "@arcgis/core/Map";
import MapView from "@arcgis/core/views/MapView";
import esriConfig from "@arcgis/core/config";

  export default {
    name: 'MapDisplay',
    methods: {
      initMap(){
        esriConfig.apiKey = '你的Api密钥'
        // 创建地图
        const map = new Map({
          basemap: "arcgis-topographic" // 底图图层
        })

        // 创建地图视图
        const view = new MapView({
          map: map,
          center: [-118.805, 34.027], // 地图中心点经纬度
          zoom: 13, // 缩放等级
          container: "viewDiv" // 地图容器id
        })
      },
    },
    mounted() {
      this.initMap()
    },
  }
</script>

<style scoped>
@import "https://js.arcgis.com/4.22/@arcgis/core/assets/esri/themes/dark/main.css";
#viewDiv{
  height: 80vh;
  width: 100%;
}
</style>

二、添加点、线和多边形

1. 添加模块

import Graphic from "@arcgis/core/Graphic";
import GraphicsLayer from "@arcgis/core/layers/GraphicsLayer";

2. 添加图形图层

图形图层是图形的容器,被用于在地图上展示图形。你可以添加多个图形图层到一个地图视图上,而且图形图层置于所有图层之上。

// 创建图形图层
const graphicsLayer = new GraphicsLayer()
map.add(graphicsLayer)  // 添加图层至地图中

3. 添加点图形

一个点图形是由一个点和一个点符号来创建的。一个点由经度(x)和纬度(y)来定义,而一个点符号由填充颜色和轮廓来定义。

// 添加点
const point = { //点设置
  type: "point",  //类型:点、线、面
  longitude: -118.80657463861,  //经度
  latitude: 34.0005930608889  //纬度
}
const simpleMarkerSymbol = {  //点符号设置
  type: "simple-marker",  //点符号类型(一般为SimpleMarkerSymbol, PictureMarkerSymbol 和 TextSymbol等)
  color: [226, 119, 40],  //符号颜色
  outline: {  //轮廓设置
      color: [255, 255, 255], //轮廓颜色
      width: 1  //轮廓宽度
  }
}
const pointGraphic = new Graphic({
  geometry: point,
  symbol: simpleMarkerSymbol
})
graphicsLayer.add(pointGraphic)

4. 添加线图形

一个线图形是由一条折线和一个线符号来创建的。一条折线由一个点序列和一个空间参考来定义,而一个线符号由颜色和线宽来定义。

// 添加线
const polyline = {
  type: "polyline",
  paths: [
      [-118.821527826096, 34.0139576938577],
      [-118.814893761649, 34.0080602407843],
      [-118.808878330345, 34.0016642996246]
  ]
}
const simpleLineSymbol = {  //线符号设置
  type: "simple-line",  //线符号类型(一般为SimpleLineSymbol, TextSymbol, CIMSymbol)
  color: [226, 119, 40],
  width: 2  //线宽
}
const polylineGraphic = new Graphic({
  geometry: polyline,
  symbol: simpleLineSymbol
})
graphicsLayer.add(polylineGraphic)

5. 添加多边形图形

一个多边形图形是由一个多边形和一个填充符号来创建的。一个多边形由一个点序列(环形)所描述的封闭边界和一个空间参考来定义,而一个填充符号由填充颜色和轮廓来定义。

// 添加多边形
const polygon = {
  type: "polygon",
  rings: [  //外多边形环坐标应按顺时针顺序添加,而内环坐标(岛)应按逆时针顺序添加
      [-118.818984489994, 34.0137559967283],
      [-118.806796597377, 34.0215816298725],
      [-118.791432890735, 34.0163883241613],
      [-118.79596686535, 34.008564864635],
      [-118.808558110679, 34.0035027131376]
  ]
}
const simpleFillSymbol = {  //多边形符号设置
  type: "simple-fill",  //面符号类型(一般为SimpleFillSymbol、PictureFillSymbol、SimpleMarkerSymbol 和 TextSymbol等)
  color: [227, 139, 79, 0.8],  //面颜色与透明度
  outline: {  //轮廓设置
      color: [255, 255, 255],
      width: 1
  }
}
const polygonGraphic = new Graphic({
  geometry: polygon,
  symbol: simpleFillSymbol,
})
graphicsLayer.add(polygonGraphic)

6. 创建一个弹出窗口

你可以为添加的点线面图形添加一个弹出窗口。弹出窗口使用attribute和popupTemplate属性。

// 添加多边形
const polygon = {
  type: "polygon",
  rings: [  //外多边形环坐标应按顺时针顺序添加,而内环坐标(岛)应按逆时针顺序添加
      [-118.818984489994, 34.0137559967283],
      [-118.806796597377, 34.0215816298725],
      [-118.791432890735, 34.0163883241613],
      [-118.79596686535, 34.008564864635],
      [-118.808558110679, 34.0035027131376]
  ]
}
const simpleFillSymbol = {  //多边形符号设置
  type: "simple-fill",  //面符号类型(一般为SimpleFillSymbol、PictureFillSymbol、SimpleMarkerSymbol 和 TextSymbol等)
  color: [227, 139, 79, 0.8],  //面颜色与透明度
  outline: {  //轮廓设置
      color: [255, 255, 255],
      width: 1
  }
}
// 添加弹出窗口
const popupTemplate = {
  title: "{Name}",
  content: "{Description}"
}
const attributes = {
  Name: "图形",
  Description: "这是一个多边形"
}

const polygonGraphic = new Graphic({
  geometry: polygon,
  symbol: simpleFillSymbol,

  attributes: attributes,
  popupTemplate: popupTemplate
})
graphicsLayer.add(polygonGraphic)

参考例子

示例图
在这里插入图片描述

代码如下(示例):

<template>
  <div id="viewDiv">
    
  </div>
</template>

<script>
import Map from "@arcgis/core/Map";
import MapView from "@arcgis/core/views/MapView";
import esriConfig from "@arcgis/core/config";

import Graphic from "@arcgis/core/Graphic";
import GraphicsLayer from "@arcgis/core/layers/GraphicsLayer";

  export default {
    name: 'MapDisplay',
    data() {
      return {
        map: null,
        mapView: null,
        graphicsLayer: null,  //图形图层
      }
    },
    methods: {
      initMap(){
        esriConfig.apiKey = '你的ApiKey'
        // 创建地图
        this.map = new Map({
          basemap: "arcgis-topographic" // 底图图层
        })

        // 创建地图视图
        this.view = new MapView({
          map: this.map,
          center: [-118.805, 34.027], // 地图中心点经纬度
          zoom: 13, // 缩放等级
          container: "viewDiv" // 地图容器id
        })
      },
      createGraphic(){
        // 创建图形图层
        this.graphicsLayer = new GraphicsLayer()
        this.map.add(this.graphicsLayer)  // 添加图层至地图中

        // 添加点
        const point = { //点设置
          type: "point",  //类型:点、线、面
          longitude: -118.80657463861,  //经度
          latitude: 34.0005930608889  //纬度
        }
        const simpleMarkerSymbol = {  //点符号设置
          type: "simple-marker",  //点符号类型(一般为SimpleMarkerSymbol, PictureMarkerSymbol 和 TextSymbol等)
          color: [226, 119, 40],  //符号颜色
          outline: {  //轮廓设置
              color: [255, 255, 255], //轮廓颜色
              width: 1  //轮廓宽度
          }
        }
        const pointGraphic = new Graphic({
          geometry: point,
          symbol: simpleMarkerSymbol
        })
        this.graphicsLayer.add(pointGraphic)

        // 添加线
        const polyline = {
          type: "polyline",
          paths: [
              [-118.821527826096, 34.0139576938577],
              [-118.814893761649, 34.0080602407843],
              [-118.808878330345, 34.0016642996246]
          ]
        }
        const simpleLineSymbol = {  //线符号设置
          type: "simple-line",  //线符号类型(一般为SimpleLineSymbol, TextSymbol, CIMSymbol)
          color: [226, 119, 40],
          width: 2  //线宽
        }
        const polylineGraphic = new Graphic({
          geometry: polyline,
          symbol: simpleLineSymbol
        })
        this.graphicsLayer.add(polylineGraphic)

        // 添加多边形
        const polygon = {
          type: "polygon",
          rings: [  //外多边形环坐标应按顺时针顺序添加,而内环坐标(岛)应按逆时针顺序添加
              [-118.818984489994, 34.0137559967283],
              [-118.806796597377, 34.0215816298725],
              [-118.791432890735, 34.0163883241613],
              [-118.79596686535, 34.008564864635],
              [-118.808558110679, 34.0035027131376]
          ]
        }
        const simpleFillSymbol = {  //多边形符号设置
          type: "simple-fill",  //面符号类型(一般为SimpleFillSymbol、PictureFillSymbol、SimpleMarkerSymbol 和 TextSymbol等)
          color: [227, 139, 79, 0.8],  //面颜色与透明度
          outline: {  //轮廓设置
              color: [255, 255, 255],
              width: 1
          }
        }
        // 添加弹出窗口
        const popupTemplate = {
          title: "{Name}",
          content: "{Description}"
        }
        const attributes = {
          Name: "图形",
          Description: "这是一个多边形"
        }
        const polygonGraphic = new Graphic({
          geometry: polygon,
          symbol: simpleFillSymbol,

          attributes: attributes,
          popupTemplate: popupTemplate
        })
        this.graphicsLayer.add(polygonGraphic)
      },
    },
    mounted() {
      this.initMap()
      this.createGraphic()
    },
  }
</script>

<style scoped>
@import "https://js.arcgis.com/4.22/@arcgis/core/assets/esri/themes/dark/main.css";
#viewDiv{
  height: 80vh;
  width: 100%;
}
</style>
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: b'arcgis engine c#\xe7\x94\xbb\xe7\x82\xb9\xe7\xba\xbf\xe9\x9d\xa2' 是一个基于 C# 的 ArcGIS Engine 应用程序开发框架,可用于创建点、线、面等图形元素来表示地图数据。 ### 回答2: ArcGIS Engine是一款由美国Esri公司开发的软件开发工具包,它可以帮助开发人员将ArcGIS技术集成到自己开发的桌面应用程序和服务器应用程序中。通过ArcGIS Engine,开发人员能够访问和操作地图、空间数据、地理处理和地图服务等GIS资源。 ArcGIS Engine提供了一套完整的GIS工具箱,包括地图浏览、地图查询、空间分析、数据编辑、地理编码、网络分析等功能模块,这些模块可以让开发人员快速构建出功能齐全的GIS应用程序。同时,ArcGIS Engine还提供了各种编程接口,包括COM、.NET和Java等,使得开发人员能够使用自己熟悉的编程语言进行开发。 除此之外,ArcGIS Engine还支持多种开发环境,包括Visual Studio、Eclipse、Delphi等,这样使得开发人员可以在自己习惯的开发环境中进行开发。而且,ArcGIS Engine还具备完善的文档和示例库,这些资源可以帮助开发人员更快地了解和掌握如何使用ArcGIS Engine进行开发。 总的来说,ArcGIS Engine是一款非常优秀的GIS软件开发工具包,它可以帮助开发人员快速构建出功能强大的GIS应用程序,提高开发效率和开发质量。如果您是一位GIS开发人员,认真学习和使用ArcGIS Engine将会是您不错的选择。 ### 回答3: ArcGIS Engine C++ ArcGIS Engine是由Esri开发的一个软件平台,可以用于创建和部署专业级GIS应用程序。ArcGIS Engine C++是ArcGIS Engine平台上的一种编程语言,也是一种面向对象的编程语言。它使用C++语言作为主要的开发语言,可以利用ArcObjects来访问和管理地理空间数据,并将它们用于地图制作、空间分析等任务。 ArcGIS Engine C++提供给开发者一个底层的GIS编程框架,可以利用该框架自定义地理空间应用程序的各种组件,比如地图工具,地图符号,地图导航器等等。它可以让开发者自由组合各种地理空间组件,以达到用户所需的功能和体验,从而满足各种地理空间应用的需求。 ArcGIS Engine C++可以采用多种不同的方法开发,包括使用Esri提供的API和开发工具,或使用第三方的开发工具。当开发ArcGIS Engine C++应用程序时,可以使用ArcGIS Desktop应用程序中所使用的相同的技术和工具。同时,它可以与多种编程语言和开发工具集成,可以使开发者与其他编程领域的开发人员进行协同作业,同时也可以轻松地实现外部与内部应用程序之间的交互和数据共享。 总之,ArcGIS Engine C++是一个功能强大的GIS开发框架,可以支持多种应用程序开发模式以及多种编程语言和工具,并提供完整的GIS解决方案。它可以让开发人员轻松快捷地开发出符合用户需求的GIS应用程序,以及实现与其他应用程序无缝衔接的数据共享和交互。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值