GIS工具maptalks开发手册(四)02——渲染地图信息框之添加绘制工具 获取面的坐标数据信息框进行展示 渲染图片的两种方式

news2024/11/15 11:53:20

GIS工具maptalks开发手册(四)02——渲染地图信息框之添加绘制工具 & 获取面的坐标数据信息框进行展示 & 渲染图片的两种方式

效果-获取面的坐标

在这里插入图片描述

效果-渲染图片的2种方式

在这里插入图片描述

代码

index.html

<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>获取图层的坐标数据</title>
<style type="text/css">
  html,
  body {
    margin: 0px;
    height: 100%;
    width: 100%;
  }

  .container {
    width: 900px;
    height: 500px;
    margin: 50px;
  }
</style>
<link rel="stylesheet" href="https://unpkg.com/maptalks/dist/maptalks.css">
<script type="text/javascript" src="https://unpkg.com/maptalks/dist/maptalks.min.js"></script>

<body>

  <div id="map" class="container"></div>

  <script>

    var map = new maptalks.Map('map', {
      center: [114.400196, 36.999478],
      // center:  [-0.1310557164531474,51.502540469671175],
      zoom: 16,
      baseLayer: new maptalks.TileLayer('base', {
        // urlTemplate: 'http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}', //黑暗主题
        // urlTemplate: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',  // 官网
        urlTemplate: 'https://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}',// 彩色主题,坐标系同黑暗主题
        subdomains: ['a', 'b', 'c', 'd'],
        attribution: '&copy; <a href="http://osm.org">OpenStreetMap</a> contributors, &copy; <a href="https://carto.com/">CARTO</a>'
      })
    });

    // 渲染图片的第二种方式:images设置限定区域,左上和右下的位置坐标
    //  ① extent: map.getExtent(),  //  图片大小:居中铺满地图视野
    // ② 
    // let  extent = map.getExtent();

    // // console.log(extent);
    // // console.log(extent.xmax); // -0.0012234410202154322
    // extent.xmax =
    //   extent.xmax -
    //   0.0009520458196448089 -
    //   0.0013465535936347806 -
    //   0.0013146624997943945;
    // extent.xmin = extent.xmin + 0.0008865151057761977 - 0.0013146624997943945;
    // extent.ymax = extent.ymax - 0.0013408400707248802 - 0.0013465535936347806;
    // extent.ymin = extent.ymin + 0.0013416043410643397;

    new maptalks.ImageLayer("images", [{
      // url : './a.jpg',
      url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
      // extent: map.getExtent(), // ① 居中铺满
      // extent:extent, // ② 限定区域
      // ③ 具体坐标数值
      extent: [114.40184088740602, 37.002608169667695, 114.4028259092072, 37.00181114116637],  // 左上  右下
      opacity: 1
    }]).addTo(map);

    var layer = new maptalks.VectorLayer('vector').addTo(map);

    var drawTool = new maptalks.DrawTool({
      mode: 'Point'
    }).addTo(map).disable();

    drawTool.on('drawend', function (param) {
      console.log('图层类型', param.geometry.type);
      console.log(param.geometry._coordinates);
      if (param.geometry.type === 'Point') {
        var arrData = '';
        arrData = '[' + param.geometry._coordinates.x + ',' + param.geometry._coordinates.y + ']'
        console.log('点的坐标', arrData);
      }
      if (param.geometry.type === 'Polygon') {
        var arr2 = param.geometry._coordinates.map((val) => {
          var arr1 = [];
          console.log(val);
          arr1[0] = val.x;
          arr1[1] = val.y;
          // console.log(arr1);
          return arr1
        })
        console.log('面的坐标', arr2);
        var json = JSON.stringify(arr2);
        console.log('面的坐标json格式', json);
      }

      // 地图信息框
      //     var options = {
      //     'title'     : '绘制点/面的坐标',
      //     'content'   : arrData
      //     'content'   : arr2+''

      //     // 'autoPan': true,
      //     // 'width': 300,
      //     // 'minHeight': 120,
      //     // 'custom': false,
      //     //'autoOpenOn' : 'click',  //set to null if not to open window when clicking on map
      //     //'autoCloseOn' : 'click'
      //   };
      //   var infoWindow = new maptalks.ui.InfoWindow(options);
      //   infoWindow.addTo(map).show();
      layer.addGeometry(param.geometry);
    });

    var items = ['Point', 'LineString', 'Polygon', 'Circle', 'Ellipse', 'Rectangle', 'FreeHandLineString', 'FreeHandPolygon'].map(function (value) {
      return {
        item: value,
        click: function () {
          drawTool.setMode(value).enable();
        }
      };
    });

    var toolbar = new maptalks.control.Toolbar({
      items: [
        {
          item: 'Shape/绘制',
          children: items
        },
        {
          item: 'Disable/关闭',
          click: function () {
            drawTool.disable();
          }
        },
        {
          item: 'Clear/清空',
          click: function () {
            layer.clear();
          }
        }
      ]
    }).addTo(map);
    
    // 渲染图片的第一种方式:Marker设置宽高
    var marker1 = new maptalks.Marker(
      [114.400196, 36.999478],
      {
        'symbol': {
          'markerFile': './56.svg',
          'markerWidth': 200,
          'markerHeight': 100,
          'markerDx': 0,
          'markerDy': 0,
          'markerOpacity': 1
        }
      }
    ).addTo(layer);


  </script>
</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/56186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计springboot校园招聘系统设计

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

家装家居行业该如何进行网络推广?

咱们这里谈家居家装行业&#xff0c;指得是置办新家的大件产品&#xff0c;不是锅碗瓢盆&#xff0c;也不是床单被罩那些。如衣柜、橱柜、灯具、智能马桶、窗户、瓷砖、沙发、床等等这些是咱们讨论的范围。 在家装家居行业中&#xff0c;每个产品的客单价通常很高&#xff0c;回…

更改 HIVE 表字段数据类型有哪些注意事项?

更改 HIVE 表字段数据类型有哪些注意事项&#xff1f; 1. 使用 HIVE 表的常见规范 在大数据离线分析场景中&#xff0c;在数据建模/表格式这一层&#xff0c;目前使用最多的还是 APACHE HIVE 这一数据仓库框架&#xff08;湖仓一体的框架&#xff0c;如 Iceberg/DeltaLake/Hu…

深入理解 Web 协议:HTTP 2

目录 本篇将详细介绍 http2 协议的方方面面&#xff0c;知识点如下&#xff1a; HTTP 2 连接的建立 HTTP 2 中帧和流的关系 HTTP 2 中流量节省的奥秘&#xff1a;HPACK 算法 HTTP 2 协议中 Server Push 的能力 HTTP 2 为什么要实现流量控制&#xff1f; HTTP 2 协议遇到的…

记一次PDU接室外监控溶解事故

近期要新增20-30个室外监控&#xff0c;监控位于山道&#xff0c;山道长约1000米&#xff0c;根据以往惯例&#xff0c;要求从UPS接电。 室外设备箱如图&#xff1a; 施工方从UPS接电后&#xff0c;直接接接线板&#xff0c;从接线板接两个220V-24V海康监控电源&#xff0c;电…

MySQL8高级

MySQL8高级 一、Linux下MySQL的安装与使用 1、版本说明 MySQL Community Server 社区版本&#xff0c;开源免费&#xff0c;自由下载&#xff0c;但不提供官方技术支持&#xff0c;适用于大多数普通用户。MySQL Enterprise Edition 企业版本&#xff0c;需付费&#xff0c;不能…

软件测试基础-自动化测试技术

今天跟大家分享软件测试基础&#xff0c;自动化测试技术&#xff0c;主要从引入自动化测试的原因、自动化测试的定义、自动化测试的优势、自动化测试的劣势、自动化测试的工具五个方面来讲述。 01 引入自动化测试的原因 软件规模越来越大&#xff0c;用户对软件的质量要求越来…

基于PHP+MYSQL药店会员管理系统的设计与实现

药房会员管理系统是信息时代的产物,随着时代的发展,各大药店也与时俱进使用了各类现代化的系统来进行各类药品和会员信息的管理,甚至有些药店会给会员使用积分系统,根据用户的消费进行积分,然后用积分兑换一些差用的日常用品或者药品,从而增加会员的黏度。 PHP&#xff1a;MYSQ…

[SpringMVC1]简介与快速入门案例详解

文章目录 一、SpringMVC简介 1.概述 2.三大模块 二、SpringMVC快速入门 1.准备工作 &#xff08;1&#xff09;新建Maven项目&#xff0c;选择webapp模板 &#xff08;2&#xff09;新增java源文件包 2.开始配置SpringMVC (1)在pom.xml中导入相关坐标以下载需要用到的依赖…

[附源码]计算机毕业设计JAVA鞋店销售管理

[附源码]计算机毕业设计JAVA鞋店销售管理 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

SpringBoot旅游网源码和论文java旅游管理系统

随着人们生活水平的不断提升&#xff0c;人们对旅游的需求越来越旺盛&#xff0c;对旅游产品 和服务的质量要求也越来越高。伴随着计算机技术、网络技术的不断普及与应用&#xff0c; 人们通过网络浏览旅游信息&#xff0c;预订旅游产品&#xff0c;交流旅游体验的活动越来越多…

AI生命科学绘图(4):质粒图谱的绘制

学习来源 &#xff1a;B站生信师兄 内容&#xff1a;质粒图谱绘制 质粒绘制思路 1.绘制俩个正圆轮廓&#xff0c;修改描边颜色和粗细 选择椭圆工具&#xff1a;按住shift绘制一个正圆&#xff0c;然后Alt拖动复制 拖动使得俩个圆重合 2.使用剪刀工具&#xff0c;修剪掉不需要…

[附源码]计算机毕业设计右脑开发教育课程管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

1 FPGA ZYBO Xilinx 按键控制LED灯 key_led

视频教程&#xff1a;第11.1讲 按键控制LED灯实验原理讲解_哔哩哔哩_bilibili 约束文件&#xff1a;digilent-xdc/Zybo-Master.xdc at master Digilent/digilent-xdc (github.com) 原理图&#xff1a;Zybo Z7 - Digilent Reference B 实验任务 使用ZYBO上的PL端按键&#…

AD域控服务器部署

AD服务器部署 一、主域控的部署&#xff08;主域控名2012DC1&#xff0c;ip192.168.15.1&#xff09;&#xff1a; 1、添加角色和功能向导 2、基于角色或基于功能的安装 3、从服务器池中选择服务器 4、选择Active Directory域服务 5、默认&#xff0c;下一步 6、默认&#xff0…

区间信息维护与查询【分块】 - 原理 分块详解

区间信息维护与查询【分块】 - 原理 分块详解 树状数组和线段树虽然非常方便&#xff0c;但维护的信息必须满足信息合并特性&#xff08;如区间可加、可减&#xff09;&#xff0c;若不满足此特性&#xff0c;则不可以使用树状数组和线段树。分块算法可以维护一些线段树维护不…

简单入门编写html登录界面

<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>你好呀&#xff0c;登录吧</title><style&…

MySQL锁,锁的到底是什么

作者&#xff1a;蝉沐风 博客站点&#xff1a;https://www.chanmufeng.com 公众号&#xff1a;蝉沐风的码场 本文目录1. 资源的竞争方式2. 读—写/写—读下的问题2.1. 幻读2.2. 不可重复读2.3. 脏读2.4. 锁与MVCC的关系2.5. 锁与事务的关系3. 写—写情况4. 锁的粒度5. 锁的基本…

[附源码]计算机毕业设计JAVA校园失物招领管理系统

[附源码]计算机毕业设计JAVA校园失物招领管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

[附源码]计算机毕业设计JAVA新闻发布和评论管理系统

[附源码]计算机毕业设计JAVA新闻发布和评论管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM …