GIS工具maptalks开发手册(一)——hello world初始化

news2024/10/3 6:38:26

GIS工具maptalks开发手册(一)——hello world初始化

为何使用maptalks?

Maptalks项目是一个HTML5的地图引擎, 基于原生ES6、Javascript开发的二三维一体化地图。 通过二维地图的旋转、倾斜增加三维视角,通过插件化设计, 能与其他图形库echarts、d3.js、Three.js等结合, 可以开发各种二三维效果。由于优化了绘制性能, 有接近1.5K个单元测试用例, 所以稳定性还不错, 可以应用在很多大大小小的系统上。

​ 每个地图框架产商都与自家的地图资源进行绑定,如非常受欢迎的mapBox、高德、百度、腾讯等,你必须注册他们产品,获取key,然后调用的api,才能进行地图的相关操作,虽然带来了便利, 但同时这也存在这限制。

​ 为什么还用其他的呢?做产品,最好的做法就是由开发自己掌控,能做什么,能做到什么程度,一切都由开发把握,这才是一个完好的自主产品。maptalks是国内开源的一个地图框架,可以自定义我们的地图资源,不用第三方支持,而且也集成了很多插件,比如three.js、echarts、热力图,可以支持我们的开发需求。

1、基本介绍

1、官网——https://maptalks.org/

2、npm地址——https://www.npmjs.com/package/maptalks

3、基础示例——https://maptalks.org/getting-started.html

4、api参数(英文)——https://maptalks.org/maptalks.js/api/1.x/Map.html

5、英文单页面模型集合——https://maptalks.org/examples/en/map/load/

6、中文单页面模型集合——https://maptalks.org/examples/cn/map/load/

  • map相关参数和方法——https://maptalks.org/maptalks.js/api/0.x/Map.html

    比如:获取中心点-getCenter()、设置中心点-setCenter(coordinate)

    获取地图层级-getZoom()、设置地图层级-setZoom(zoomNumber)

    获取图层-getLayer(id)、添加图层-addLayer(layer)、移除图层-removeLayer(layer)

    图层大小-铺满可视区getExtent()

  • layer相关参数和方法——https://maptalks.org/maptalks.js/api/0.x/Layer.html

    如:添加图层-addTo(map)、显示图层-show()、隐藏图层-hide()、移除图层-remove()

  • geometry相关参数和方法——https://maptalks.org/maptalks.js/api/0.x/Geometry.html

    比如:获取图层-getLayer()、获取图层ID-getId()

    获取图层样式-getSymbol()、设置图层样式-setSymbol(symbol)

    显示图层-show()、隐藏图层-hide()、复制图层-copy()、移除图层-remove()

    转换数据格式——toGeoJSONGeometry()、toGeoJSON()

  • 安装

npm install maptalks

电子地图图层——底图主题urlTemplate

// 电子地图图层
// 1、初始常规主题
urlTemplate: "http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png", 
// 2、彩色主题,坐标系同黑暗主题
urlTemplate:"https://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}",
// 3、黑暗主题
urlTemplate: 'http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}',

2、基础示例

创建图层

创建图层的方式有两种:

在创建地图实例的同时创建图层: 2个参数,必填参数为第一个(id),第二个参数是options,是它的图层属性设置,一般默认就行,后面也可以通过图层对象进行设置。

效果

在这里插入图片描述

出现跨域的问题,需要设置crossOrigin: undefined

示例1-html版

helloWorld.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: [-0.113049, 51.498568],// 地图的初始中心
            zoom: 14, // /地图的初试缩放层级
            pitch:30,// 倾斜度
            minZoom: 8,// 最小缩放层级   
			maxZoom: 22,// 最大缩放层级
            zoomControl: true, // 层级控件
            scaleControl: true, // 缩放控件
            // overviewControl: true, // 描述控件
            dragPitch: true, //是否可以倾斜(Ctrl+鼠标操作实现)
            dragRotate: true, //是否可以旋转
            dragRotatePitch: false, //是否旋转倾斜可以同时操作
            // baseLayer 表示基础图层,它可以添加多个,逗号隔开
            baseLayer: new maptalks.TileLayer('base', {
                // 电子地图图层 // 投影路径
                urlTemplate: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',
                subdomains: ['a', 'b', 'c', 'd'],// 路径参数
                // 左下角
                attribution: '&copy; <a href="http://osm.org">OpenStreetMap</a> contributors, &copy; <a href="https://carto.com/">CARTO</a>'
            }),
          layers: [
          // 创建矢量图层 v
          // new maptalks.VectorLayer('v', 几何图形列表(geometries), 可选参数配置(options))
          new maptalks.VectorLayer('v')
        ]
        });

    </script>
</body>

</html>

创建图层实例,然后添加到map实例中 注意:这里用了一个方法addTo(map)这个方法对所有组件通用,意思就是,下面我们介绍的工具、组件等添加到地图上,都是用这个方法。

new maptalks.VectorLayer('v').addTo(map)
示例2-vue注释版

index.vue

<template>
  <div id="map" class="container"></div>
</template>
<script>
import "maptalks/dist/maptalks.css";
import * as maptalks from "maptalks";
export default {
  mounted() {
    this.$nextTick(() => {
      const map = new maptalks.Map("map", {
        // 默认中心点点位
        center: [116.3972282409668, 39.90960456049752],
        // 缩放层级
        zoom: 14,
        // 倾斜度
        pitch: 50,
        // 轴承
        // bearing: 90,
        // 最小缩放层级
        minZoom: 1,
        // 最大缩放层级
        maxZoom: 22,
        // baseLayer 表示基础图层,它可以添加多个,逗号隔开
        baseLayer: new maptalks.TileLayer("base", {
          //   // 出现跨域问题,要设置这个,一定是undefined
          //   crossOrigin: undefined,
          // 电子地图图层
          urlTemplate:
            "http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
          subdomains: ["a", "b", "c", "d"],
          attribution:
            '&copy; <a href="http://osm.org">OpenStreetMap</a> contributors, &copy; <a href="https://carto.com/">CARTO</a>',
        }),
      });
      console.log("map: ", map);
    });
  },
};
</script>
<style lang="scss">
html,
body {
  margin: 0px;
  height: 100%;
  width: 100%;
}
.container {
  width: 1200px;
  height: 700px;
  margin: 50px;
}
</style>
示例3-vue简约版

index.vue

<template>
 <div id="map" class="container"></div>
</template>
<script>
import 'maptalks/dist/maptalks.css';
import * as maptalks from 'maptalks';
export default {
 mounted() {
  this.$nextTick(() => {
   const map = new maptalks.Map('map', {
    center: [-0.113049, 51.498568],
    zoom: 14,
    baseLayer: new maptalks.TileLayer('base', {
     urlTemplate: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',
     subdomains: ['a', 'b', 'c', 'd'],
     attribution: '&copy; <a href="http://osm.org">OpenStreetMap</a> contributors, &copy; <a href="https://carto.com/">CARTO</a>',
    }),
   });
   console.log('map: ', map);
  });
 },
};
</script>
<style lang="scss">
html,body{ margin:0px;height:100%;width:100%; }
.container{ width:1200px;height:700px;margin: 50px; }
</style>

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

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

相关文章

微信小程序实战十四:小程序及APP端实现客服功能

文章目录 1.效果预览2.小程序后台添加客服3.小程序代码中集成客服4.APP中添加客服5.企业微信登陆6.获取企业ID值7.设置多客服说明:项目用uni开发的,有小程序版本和APP版本,最开始项目中集成了第三方美洽的客服,2个客服一年收3600,老哥咨询我是否有稍微优惠点的方案,老哥带…

QuEra将研发可重构中性原子量子计算机

&#xff08;图片来源&#xff1a;网络&#xff09; 上个月&#xff0c;借助Amazon Braket&#xff0c;QuEra Computing开始提供对其中性原子量子系统Aquila的访问, Aquila具有256个量子比特。如今&#xff0c;量子公司的数量与日俱增&#xff0c;QuEra是其中之一&#xff0c;它…

java httpclient的digest验证(可恨,找遍全网没有靠谱的,不是少包就是少文件。含泪整理o(╥﹏╥)o~~~~)

背景&#xff1a;调用第三方接口&#xff0c;使用的是digest auth鉴权方式&#xff0c; basic auth和digest auth比较&#xff1a; basic认证是把用户和密码通过base64加密后发送给服务器进行验证。 Basic认证过程简单&#xff0c;每次请求都有发送密码。安全性较低。 为了解决…

[附源码]JAVA毕业设计衡师社团管理系统(系统+LW)

[附源码]JAVA毕业设计衡师社团管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

【allegro 17.4软件操作保姆级教程八】布线操作基础之三

目录 1.1扇出操作 1.2差分对过孔间距调整 1.3差分线换层自动添加回流过孔 1.4多人协同操作 1.5导入pin delay 1.6走线导圆弧 1.1扇出操作 关于信号扇出有如下一些需要注意的点&#xff1a; 1、过孔扇出要考虑其间距&#xff0c;要求2个过孔之间保证能过一根信号线&#x…

java+jsp基于ssm的校园OTO超市系统-计算机毕业设计

项目介绍 本网站主要是针对高校学生以超市购物为重点开发的网站。系统从用户上分为三种&#xff1a;卖家、买家和游客。系统从模块分为买家模块和卖家模块&#xff0c;买家模块包括用户注册登录、商品浏览、商品详情、商品加入购物车、购物车中商品删除、购物车商品数量变更、…

vue 微信登录

文章目录前言一、第一步用户授权获取code1、PC扫码方式一方式二&#xff1a;踩坑记录2、移动端微信内置浏览器授权获取code二、第二步 通过code获取access_token三、获取用户个人信息前言 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信…

没想到吧,Spring中还有一招集合注入的写法

Spring作为项目中不可缺少的底层框架&#xff0c;提供的最基础的功能就是bean的管理了。bean的注入相信大家都比较熟悉了&#xff0c;但是有几种不太常用到的集合注入方式&#xff0c;可能有的同学会不太了解&#xff0c;今天我们就通过实例看看它的使用。 首先&#xff0c;声…

[附源码]JAVA毕业设计衡水特产展销系统(系统+LW)

[附源码]JAVA毕业设计衡水特产展销系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

正则匹配删除指令

// 删除以 SameSeed 开头的整行 ^SameSeed.*$执行前&#xff1a; 执行后&#xff1a; 这样我们就可以在代码发布时删除代码中所有的调试信息&#xff0c;使代码中不包含任何 DEADCODE&#xff0c;但这样会导致一个问题&#xff0c;就是会出现一个空行&#xff0c;同时代码中…

生命在于学习——docker逃逸

注意&#xff1a;本篇文章仅用于学习记录&#xff0c;不得用于其他用途。 一、docker逃逸 docker逃逸就是从当前docker容器权限中逃逸出来&#xff0c;获得宿主机的权限。 二、常见的逃逸方法 1、配置不当引起的逃逸 &#xff08;1&#xff09;Docker Remote API未授权访问…

jsp汽车租赁管理系统Myeclipse开发sqlserver数据库web结构java编程计算机网页项目

一、源码特点 jsp汽车租赁管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库sqlserver2008&#xff…

应用现代化方案实践,重塑企业应用价值—工业篇

应用现代化是指通过更现代和新兴的IT技术来改造或部署传统应用&#xff0c;从而使应用更适合企业发展的一种优化方式。在企业上云背景下&#xff0c;应用现代化改造是将遗留的传统应用改造升级到云计算环境&#xff0c;从而兼容更现代和新兴的计算技术的过程。这种改造升级的同…

软件测试分类

1、是否关注源代码 黑盒测试 - 不关注代码逻辑&#xff0c;只关注输入输出 白盒测试 - 看代码的具体实现逻辑 灰盒测试 - 既关注输入输出&#xff0c;也关注代码 2、基于测试的不同阶段 单元测试 - 在底层进行的测试&#xff0c;又称模块测试&#xff08;module testing&a…

python数组处理方法

一、数组对象的属性 数组的大小&#xff08;元素个数&#xff09; array.size数组的维度 array.ndim数组元素的数据类型 array.dtype数组的形状 array.shape数组中每个元素占用的内存空间 array.itemsize数组所有元素占用的内存空间&#xff08;字节&#xff09; array.nbytes…

实验7 Spark初级编程实践

一、实验目的 掌握使用 Spark 访问本地文件和 HDFS 文件的方法掌握 Spark 应用程序的编写、编译和运行方法 二、实验平台 操作系统&#xff1a;Ubuntu18.04&#xff08;或 Ubuntu16.04&#xff09;Spark 版本&#xff1a;2.4.0Hadoop 版本&#xff1a;3.1.3 三、实验内容和…

举个栗子~Alteryx 技巧(3):离线激活 Alteryx Designer

之前我们分享了 如何下载并安装 Alteryx Designer。然而&#xff0c;对于内网环境的用户来说&#xff0c;就无法使用上述方法来激活软件了&#xff01;那么&#xff0c;不能连接外网的电脑该如何离线激活 Alteryx Designer 呢&#xff1f; 本期《举个栗子&#xff01;Alteryx …

opencv c++ 边缘提取

1、边缘 1.1 边缘定义 以图像像素值突变最大的方向作为边缘法线&#xff0c;与边缘法线垂直的就是边缘。 边缘强度&#xff1a;局部图像上的像素值突变程度&#xff08;图像局部一阶梯度和二阶梯度值&#xff09;。 1.2 边缘类别 跃迁类型 …

645仪表以JSON格式上发方法

1.概述 之前我们已经介绍了Modbus RTU仪表实现JSON格式上发云服务器的方法&#xff0c;类似的现在也可以支持645协议的仪表通过JSON格式上发服务器。 卓岚实现645仪表转JSON网关的特点有&#xff1a; 1.提供透传、MQTT、POST、GET等上位机协议&#xff0c;结合JSON格式进行传…

CSS三大特性之层叠性

CSS的三个特性&#xff1a;层叠性&#xff0c;继承性&#xff0c;优先级 层叠性&#xff1a; 相同选择器给设置相同的样式&#xff0c;此时一个样式就会覆盖(层叠)另一个冲突的样式&#xff0c;层叠性主要解决样式冲突的问题。 层叠性原则&#xff1a; 样式冲突&#xff0c…