VectorMap.js是一个开源地图渲染JavaScript库, 可以使用WebGL或者HTML5两种方式进行交互式矢量地图 (包括“矢量瓦片地图”,一般性矢量数据地图)和 栅格瓦片地图的渲染。 WebGL渲染意味着高性能,大数据, HTML5渲染意味着老浏览器的兼容性。 借助WebGL和HTML5的两架马车,VectorMap.js在性能以及浏览器兼容性方面表现优异。

作为一个专为Web GIS客户端项目提供的开源JavaScript类库包,OpenLayers用于实现对于标准格式发布的地图数据的访问与显示,经过十几年的发展, 已经成为世界范围内进行前端GIS项目的首选开源地图库。GIS前端渲染库除了OpenLayers,还有Leaflet和ESRI公司的ArcGIS API, 但是相比较而言, OpenLayers的接受度和用户群更广更多一些。 VectorMap.js就是在OpenLayers库基础上开发而来, 使用WebGL 重写了整个渲染部分,结合web worker的多线程优势,带来更高性能的渲染体验和交互体验的同时,保留了OpenLayers强大的功能,能够协助开发人员快速进行地图应用的开发。

项目地址https://github.com/ThinkGeo/VectorMap-js

在线Sample https://samples.thinkgeo.com/cloud/

  1. Hello VectorMap.js

现在开始我们的ThinkGeo VectorMap.js之旅, 其整体用法延续了OpenLayers的API模式和开发习惯,如果具有OpenLayers原生库开发经验的话,上手还是非常快的。闲话少说, 我们首先在页面引入VectorMap.js脚本库和样式库。

<!-- style sheet for vectormap.js -->
<link rel="stylesheet" href="https://cdn.thinkgeo.com/vectormap-js/3.0.0/vectormap.css"></link>
<!-- latest minified version of vectormap.js -->
<script src="https://cdn.thinkgeo.com/vectormap-js/3.0.0/vectormap.js"></script>

  

也可以在GitHub找到VectorMap.js的release版本:

https://github.com/ThinkGeo/VectorMap-js/releases

执行上述引入脚本后,即创建了OpenLayers的ol对象和VectorMap.js自定义的ol.mapsuite对象,通过它可以使用VectorMap.js的全部功能,包括OpenLayer原有所有功能。 如果具有WebGL经验的话,我们会发现所有的矢量渲染都是基于WebGL完成的,包括距离测量和面积测量等小工具。

  1. 1申请ThinkGeo Cloud Access Key

为了体验VectorMap.js在矢量化数据方面的优势和强大的渲染能力, 我们从官方推荐的“世界地图”例子为入口做一个尝试。 因为官方的”Hello World”依赖于ThinkGeo Cloud Service, 所以需要申请Access Key 才能进行矢量瓦片的请求,然后进行数据的渲染。 Access Key的申请非常简单,基本一两分钟内可以搞定, 当然如果你想用其他公司提供的矢量瓦片也没有问题,但是就需要自定义地图样式, 这块我在另一张会单独讲述。

言归正传,首先访问 https://cloud.thinkgeo.com , 如果没有注册用户,请点击“Try It Free”,进行注册,如果已有账号请自行直接登录。 流程如下。

  • 在主界面点击 “Try It Free”
  • 输入有效的用户名密码后点击 “Register”, 完成注册。
  • 登录,登录后点击”Create a client key”, 然后获取API Key

1.2开始第一个VectorMap.js程序

启动Visual Studio Code, 创建一个”index.html”, 引入之前提到的VectorMap.js脚本库和样式库后, 在”<body>”标签中添加地图载体”<div>”, 如下:

<div id="map" style="width:800px;height:600px;"></div>

  

然后在html页面添加如下JavaScript代码,进行地图资源的加载和渲染显示。

    let worldstreetsStyle = "https://cdn.thinkgeo.com/worldstreets-styles/2.0.0/light.json";
let worldstreets = new ol.mapsuite.VectorTileLayer(worldstreetsStyle,
{
apiKey:'your-ThinkGeo-Cloud-Service-key'
});
let map = new ol.Map({
layers: [worldstreets],
target: 'map',
view: new ol.View({
center: ol.proj.fromLonLat([-96.79620, 32.79423]),
zoom: 4,
}),
});

  

注意: 在代码中“your-ThinkGeo-Cloud-Service-Key”, 将其替换为自己刚刚申请的 API Key.

  1. 3运行,显示地图

修改保存之后点击运行就可以得到一幅矢量地图了,此过程可能会稍微有点长,要耐心多等一会儿。

VectorMap.js 矢量地图库 – 快速入门的更多相关文章

  1. 转: Vue.js——60分钟组件快速入门(上篇)

    转自: http://www.cnblogs.com/keepfool/p/5625583.html Vue.js——60分钟组件快速入门(上篇)   组件简介 组件系统是Vue.js其中一个重要的概 ...

  2. Vue.js——60分钟组件快速入门(上篇)

    组件简介 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应用,任意类型的应用界面都可以抽象为一个组件树: 那么什么是组件呢?组件可以扩展HTML ...

  3. Vue.js——60分钟组件快速入门

    一.组件简介 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应用,任意类型的应用界面都可以抽象为一个组件树: 那么什么是组件呢?组件可以扩展HT ...

  4. 【转】Vue.js——60分钟组件快速入门(上篇)

    文章作者:keepfool 文章出处:http://www.cnblogs.com/keepfool/ 组件简介 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的 ...

  5. Vue.js——60分钟组件快速入门(上篇)二

    来源:https://www.cnblogs.com/keepfool/p/5625583.html 组件简介 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小 ...

  6. Vue.js——vue-router 60分钟快速入门

    概述 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用.vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来.传统的 ...

  7. Vue.js——60分钟组件快速入门(下篇)

    概述 上一篇我们重点介绍了组件的创建.注册和使用,熟练这几个步骤将有助于深入组件的开发.另外,在子组件中定义props,可以让父组件的数据传递下来,这就好比子组件告诉父组件:"嘿,老哥,我开 ...

  8. Vue.js——60分钟组件快速入门(下篇)

    转自:https://www.cnblogs.com/keepfool/p/5637834.html 概述 上一篇我们重点介绍了组件的创建.注册和使用,熟练这几个步骤将有助于深入组件的开发.另外,在子 ...

  9. js框操作-----Selenium快速入门(八)

    js框,就是JavaScript中的警告框(alert),确认框(confirm),提示框(prompt),他们都是模态窗口.什么是模态窗口,大家可以自行百度一下,简单说就是弹出的窗口是在最顶端的,你 ...

随机推荐

  1. Python有参函数的使用

    1.给定验证码长度n,生成随机验证码,验证码由数字.字母组成(参考chr()内置方法) 程序代码如下: import random def create_check_code(n): check_co ...

  2. java版本的Kafka消息写入与读取

    安装zookeeper:  https://www.cnblogs.com/guoyansi19900907/p/9954864.html 并启动zookeeper 安装kafka https://w ...

  3. kali安装openvas

    参考: https://blog.51cto.com/linhong/2134910?source=drh https://www.freebuf.com/sectool/133425.html ht ...

  4. swift多线程定时器

    swift多线程定时器的使用 func countDown(_ timeOut:Int,view: UIView){ var timeout = timeOut let queue:DispatchQ ...

  5. HDFS与YARN HA部署配置文件

    core-site.xml <!--Yarn 需要使用 fs.defaultFS 指定NameNode URI --> <property> <name>fs.de ...

  6. SQL Server通过函数把逗号分隔的字符串拆分成数据列表的脚本-干货

    CREATE FUNCTION [dbo].[Split](@separator VARCHAR(64)=',',@string NVARCHAR(MAX))  RETURNS @ResultTab ...

  7. Hive表的几种存储格式

    Hive的文件存储格式: textFile textFile为默认格式 存储方式:行存储 缺点:磁盘开销大:数据解析开销大:压缩的text文件,hive无法进行合并和拆分 sequencefile 二 ...

  8. CSS绘制三角形和箭头,不用再用图片了

    前言 还在用图片制作箭头,三角形,那就太lou了.css可以轻松搞定这一切,而且颜色大小想怎么变就怎么变,还不用担心失真等问题. 先来看看这段代码: /**css*/.d1{ width: 0; he ...

  9. hadoop节点动态删除与增加

    动态删除 1)修改配置文件 修改hdfs-site.xml文件,适当减小dfs.replication的数量,增加dfs.hosts.exclude选项 vi hdfs-site.xml <pr ...

  10. 对于Python语音性能的一些个人见解

    虽然运行速度慢是 Python 与生俱来的特点,大多数时候我们用 Python 就意味着放弃对性能的追求.但是,就算是用纯 Python 完成同一个任务,老手写出来的代码可能会比菜鸟写的代码块几倍,甚 ...