GIS工具maptalks——初始化

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.hqwc.cn/news/474474.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Linux 中安装 s3cmd 并管理 Amazon s3 存储桶

S3&#xff0c; – 简单存储服务- 是亚马逊的存储服务&#xff0c;为 IT 团队提供一种安全、可扩展且可靠的方式来存储和检索云上的文件和文件夹。 S3 可确保数据在需要时可用并随着需求的增长而扩展&#xff0c;从而帮助您充分利用数据。 通常&#xff0c;在登录到您的 AWS 账…

Mybatis源码分析

Mybatis源码分析 第一章、回顾 1. 课程中工具的版本 1. JDK8 2. IDEA2018.3 3. Maven3.5.3 4. MySQL 5.1.48 --> MySQL 5Mybatis 3.4.62. Mybatis开发的简单回顾 1. Mybatis做什么&#xff1f;Mybatis是一个ORM类型框架&#xff0c;解决的数据库访问和操作的问题&#xf…

Manifest merger failed with multiple errors, see logs

问题 Manifest merger failed with multiple errors, see logs详细问题 笔者进行Android 项目开发&#xff0c;修改AndroidManifest.xml代码后&#xff0c;控制台报错 AndroidManifest.xml报错核心代码 <manifest><uses-permission android:name"android.perm…

[03] Vue指令(2)

目录 属性绑定指令(v-bind)列表渲染指令(v-for)v-for中的key 双向绑定指令(v-model) 属性绑定指令(v-bind) 作用&#xff1a;动态设置html的标签属性&#xff0c;比如&#xff1a;src、url、title语法&#xff1a;v-bind:属性名“表达式”v-bind:可以简写成 > : 比如&…

C语言函数调用的流程

函数调用时&#xff0c;进程的上下文会切换到被调函数&#xff0c;当被调函数执行完毕之后再切换回去 函数调用时代码的执行流程

电子商务跨境电商大数据的关键技术之—主流电商大数据采集

大数据采集是指通过各种技术手段和工具收集、获取和提取大规模数据的过程。在信息时代&#xff0c;各种互联网、物联网、移动设备等的普及和应用&#xff0c;产生了海量的数据&#xff0c;这些数据被称为大数据。大数据采集就是对这些数据进行收集和抓取&#xff0c;以获得有意…

SpringBoot+Vue项目部署上线

部署前准备 注册京东云 京东云: https://www.jdcloud.com/ 117.72.32.65vue本地部署 新建文件.env.development VUE_APP_BASEURLhttp://localhost:9191新建文件 .env.production VUE_APP_BASEURLhttp://117.72.32.65:9191main.js 设置全局变量$baseUrl Vue.prototype.$baseUrl…

精品springboot基于大数据的电脑主机硬件选购助手-可视化大屏

《[含文档PPT源码等]精品基于springboot基于大数据的电脑主机硬件选购助手[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端使用技术&a…

11.【CPP】模版(深入理解模版的实例化,从编译链接的原理理解模版为何无法分离编译)

非类型模版参数 1.模版参数分为类型模版参数和非类型模版参数&#xff0c;非类型模版参数一般都是整形常量&#xff08;整形&#xff1a;size_t,int,char等&#xff09; 2.浮点数、类对象以及字符串是不允许作为非类型模版参数的。非类型模版的参数必须在编译的时候就能确定结…

从汇编角度解释线程间互斥-mutex互斥锁与lock_guard的使用

多线程并发的竞态问题 我们创建三个线程同时进行购票&#xff0c;代码如下 #include<iostream> #include<thread> #include<list> using namespace std; //总票数 int ticketCount100; //售票线程 void sellTicket(int idx) {while(ticketCount>0){cou…

C++ 多起点的bfs(五十九)【第六篇】

今天我们来学习多起点的bfs 1.多起点的bfs 在普通的广度优先搜索问题中&#xff0c;为了得到从初始状态到达目标状态的最小操作数&#xff0c;则将初始状态放入队列中。离初始状态由近及远地不断扩展出新的状态&#xff0c;直到搜索到目的状态&#xff0c;或队列为空&#xff…

【网络安全】什么样的人适合学?该怎么学?

有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题&#xff1a; 什么样的人适合学习网络安全&#xff1f;我适不适合学习网络安全&#xff1f; 当然&#xff0c;产生这样的疑惑并不奇怪&#xff0c;毕竟网络安全这个专业在2017年才调整为国家一级…