webgis(四)

这篇具有很好参考价值的文章主要介绍了webgis(四)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

底图自定义

关于如何添加自定义底图可以看其他大佬的文章:

https://cloud.tencent.com/developer/article/2340544

https://blog.csdn.net/weixin_49546561/article/details/121699225

https://zhuanlan.zhihu.com/p/413366752

https://blog.csdn.net/weixin_45532870/article/details/132191366

或者直接去官方文档查阅:

https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html

引用模块

添加底图、矢量切片图层和切片图层模块

webgis(四),arcgis,javascript,vue.js

创建一个新的Basemap对象 

let basemap=new Basemap({
          baseLayers:[]
        })

添加arcgis基础底图(basemap)

创建一个新的底图对象。底图可以从 PortalItem或众所周知的 底图 ID(例如:“streets-vector”)创建,也可以用于创建自定义底图。这些底图可能是从您发布到您自己的服务器的切片服务中创建的,也可能是从第三方发布的切片服务中创建的。

引入

import Basemap from "@arcgis/core/Basemap";

不同的创建方式

  1. 通过portalItem网络地图的ID创建
let basemap = new Basemap({
  portalItem: {
    id: "8dda0e7b5e2d4fafa80132d59122268c"  // WGS84 Streets Vector webmap
  }
});

let map = new Map({
  basemap: basemap
});

2. 通过arcgis已经有的ID(例如:“topo-vector”)创建

let map = new Map({
      basemap: 'topo-vector',
    });

3. 通过第三方的图层服务创建

let basemap = new Basemap({
  baseLayers: [
    new MapImageLayer({
      url: "url to your dynamic MapServer",
      title: "Basemap"
    })
  ],
  title: "basemap",
  id: "basemap"
});

let map = new Map({
  basemap: basemap
});

创建图层

使用new方法创建了一个TileLayer对象,该对象表示一个Web切片图层。给TileLayer中的url属性设置我们发布的地图服务的URL字符串,作为底图的图层数据源。 

let basemap = new Basemap({
        baseLayers: [
          new TileLayer({
            url: "http://map.geoq.cn/arcgis/rest/services/ChinaOnlineStreetPurplishBlue/MapServer",
            title: "Basemap",
          }),
        ],
        title: "basemap",
        id: "basemap",
      });

      const map = new Map({
        basemap: basemap,
      });

      const view = new MapView({
        container: "mapview",
        center: [108, 32],
        map: map,
        zoom: 5,
      });

 将自定义图层应用到地图视图中

webgis(四),arcgis,javascript,vue.js

 或者引用底图图层的项目 ID 来访问底图图层。

由于basemaplayers是一个数组,所以还可以根据自己的需要加载更多的底图。

const vectorTileLayer = new VectorTileLayer({
        portalItem: {
          id: "6976148c11bd497d8624206f9ee03e30",
        },
        opacity: 0.75,//透明度
      });
      const imageTileLayer = new TileLayer({
        portalItem: {
          id: "1b243539f4514b6ba35e7d995890db1d", // World Hillshade
        },
      });
      let basemap = new Basemap({
        baseLayers: [imageTileLayer,
          vectorTileLayer,      
        ],
        title: "basemap",
        id: "basemap",
      });

这位大佬的博客收集了可用的地图在线服务资源:https://www.cnblogs.com/wongjzzz/p/16480208.html#chinaonlinecommunity%E5%BD%A9%E8%89%B2%E4%B8%AD%E6%96%87%E5%90%AB%E5%85%B4%E8%B6%A3%E7%82%B9%E7%89%88%E4%B8%AD%E5%9B%BD%E5%9F%BA%E7%A1%80%E5%9C%B0%E5%9B%BE

效果展示: 

webgis(四),arcgis,javascript,vue.js

当然也可以使用自定义底图为发布的切片服务

具体可看这位大佬的文章:https://blog.csdn.net/Yuewayio/article/details/124242589 

arcgis前端(2)----->基础篇--发布一个自定义地图及加载自定义地图/底图_acrgis for js acrgis 加载发布的地图-CSDN博客

ArcGIS API for JavaScript 不同数据Layer加载看这位大佬文章:https://blog.csdn.net/QY1021371614/article/details/124496732?ops_request_misc=&request_id=&biz_id=102&utm_term=FeatureLayer%E3%80%81MapImageLayer&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-124496732.142^v99^pc_search_result_base1&spm=1018.2226.3001.4187 也可以添加注记图层:webgis(四),arcgis,javascript,vue.js 添加注记后:webgis(四),arcgis,javascript,vue.js

地图控件开发

新建MapTool.vue文件

在components下新建MapTool.vue文件,在里面写入

<template>
  <div class="maptools-view">
    <span class="maptools-item">行政区划导航</span>
    <span class="maptools-item">距离测量</span>
    <span class="maptools-item">面积测量</span>
    <span class="maptools-item">清屏</span>
  </div>
</template>

<script>
export default {
  name: "MapTools",
};
</script>

<style>
.maptools-view {
  position: absolute;
  padding: 0 15px;
  height: 30px;
  top: 20px;
  right: 15px;
  background-color: aliceblue;
}
.maptools-item {
  position: relative;
  bottom: 65px;
  line-height: 30px;
  margin-left: 15px;
  color: black;
  cursor: pointer;
}
.maptools-item:first-child {
  margin-left: 0;
}
</style>

在OneMap.vue中引入MapTool.vue

webgis(四),arcgis,javascript,vue.js

Absolute(绝对定位)与relative(相对定位)的图文讲解_relative absolute-CSDN博客

这边需要将OneMap.vue页面定位样式改为relative:  

webgis(四),arcgis,javascript,vue.js

展示: (功能暂时没有做出来)

webgis(四),arcgis,javascript,vue.js

引入BasemapToggle模块

BasemapToggle 是 ArcGIS API for JavaScript 中的一个控件,它允许用户在地图视图中切换不同的基础图层(Basemap)。基础图层通常包括底图,如街道地图、卫星影像、地形图等。BasemapToggle 控件提供了一个用户界面(UI)组件,让用户可以在这些基础图层之间方便地切换。

webgis(四),arcgis,javascript,vue.js

实例化底图切换控件BasemapToggle

在MapView.vue中写入以下代码

const basemapToggle = new BasemapToggle({
        view: view,
        nextBasemap: "hybrid",
      });
      view.ui.add(basemapToggle, {
        position: "bottom-right",
      });

效果展示: 

实例化比例尺控件ScaleBar

arcgis api for js自带的控件定位只有四个,top-left,top-right,bottom-left,bottom-right。不够灵活,因为在这里我们自定义一个div来放置我们的比例尺控件,这样就可以随意控制控件放置的位置了。

定义一个div,用于放置比例尺控件 

<template>
  <div id="mapview">
    <div id="scalebar"></div>
  </div>
</template>

webgis(四),arcgis,javascript,vue.js

引入ScaleBar模块  

 webgis(四),arcgis,javascript,vue.js

实例化scaleBar,并指定它的container为上面定义的div,并将比例尺添加到view中

const scalebar = new ScaleBar({
        view: view,
        container: "scalebar",
        unit:"metric"
      });
view.ui.add(scalebar);

比例尺效果:

webgis(四),arcgis,javascript,vue.js文章来源地址https://www.toymoban.com/news/detail-833913.html

到了这里,关于webgis(四)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Element+Vue+OpenLayers webgis实战

    以 ,通过OpenLayers将遥感影像加载到浏览器中,如图1-25所示。 单击“Button”按钮可弹出一个对话框,该对话框的内容为“Hello world”,如图1-26所示。 图1-26所示对话框的实现代码如下: Element组件内部默认使用的是中文,若希望使用其他语言,则需要进行多语言设置,通过

    2024年02月17日
    浏览(48)
  • js的鼠标事件(JavaScript的鼠标事件,vue的鼠标事件)

    js鼠标事件,相关属性: vue鼠标事件,相关属性 (js鼠标事件和vue中的鼠标事件区别是省略了on字符):

    2024年02月12日
    浏览(46)
  • 【js&vue】联合gtp仿写一个简单的vue框架,以此深度学习JavaScript

    lifecycle.js 注解: this.$options.beforeMount.call(this);与 this.$options.beforeMount();有什么区别: call(this)  的作用是将当前对象( this )作为参数传递给  beforeMount  方法,使得在  beforeMount  方法内部可以通过  this  访问到当前对象的上下文 直接调用了  beforeMount  方法,没有指定上下

    2024年02月09日
    浏览(56)
  • 【开源WebGIS】07-Openlayers+Vue 测量功能-01

    OpenLayers是一个开源的地图显示引擎,支持距离测量和面积测量。距离测量功能用于测量地图上两点间的直线距离;面积测量功能用于测量地图上一个图形的面积,可以方便的实现在地图上的测量。 基础功能展示 1.1 测量功能按钮和显示结果框的添加 1.2 需要定位一个基础的

    2024年02月06日
    浏览(42)
  • JavaScript框架 Angular、React、Vue.js 的全栈解决方案比较

    在 Web 开发领域,JavaScript 提供大量技术栈可供选择。其中最典型的三套组合,分别是 MERN、MEAN 和 MEVN。前端框架(React、Angular 和 Vue)进行简化比较。 MERN 技术栈包含四大具体组件: MongoDB:一款强大的 NoSQL 数据库,以灵活的 JSON 格式存储数据。 Express.js:一套极简但强大的

    2024年02月03日
    浏览(58)
  • 基于【ESLint+JavaScript Standard Style】标准的VUE/JS/html风格指南

    本规范是适用于小仙男团队及前端团队所搭建的各种前端框架代码的通用风格规范指南; 使用时,请遵循指南细则进行代码风格约束,并在提交之前确保进行代码风格的修正操作; 本规范参考WEB行业知名的JavaScript Standard Style 规范指南。并将在后续使用过程中,逐步进行符合

    2023年04月13日
    浏览(44)
  • 2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较

    🎉欢迎来到Java学习路线专栏~探索2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:Java学习路线 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 🍹文章作者技术和水

    2024年02月11日
    浏览(49)
  • vue3结合openlayers,geoserver实现GIS一张图(WebGIS)

            不知不觉一年又要过去了,接触开发也就是这几个月的事情,感觉时间过的真快,今天就是除夕了,祝各位新年快乐呀,话说回来,其实在接触学习WebGIS的过程中还是蛮迷茫的,自己虽然是地信的学生,对于地理方面还有有一些自己的理解,但平时专业课学习的就是

    2024年02月19日
    浏览(52)
  • ArcGIS JSAPI 学习教程 - 初识 ArcGIS Maps SDK for JavaScript

    近期由于工作需要,开始接触 ArcGIS Maps SDK for JavaScript (以下简称 JSAPI ),为了更好的系统的学习,准备开设专栏,作为学习记录。 本文作为第一篇,首先介绍一下 JSAPI 的概览、官方示例以及官方 API。 然后完成 JSAPI 的 helloworld 以及注意事项。 最后简述一下 JSAPI 的优势劣势

    2024年01月19日
    浏览(59)
  • 使用JavaScript和Vue.js框架开发的电子商务网站,实现商品展示和购物车功能

    引言: 随着互联网的快速发展和智能手机的普及,电子商务行业正迎来一个全新的时代。越来越多的消费者选择网上购物,而不再局限于传统的实体店。这种趋势不仅仅是改变了消费者的习惯购物,也给企业带来了巨大的商机。为了不断满足消费者的需求,电子商务网站需要

    2024年02月15日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包