前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >主流webgis框架介绍与对比

主流webgis框架介绍与对比

作者头像
牛老师讲GIS
发布于 2021-09-10 03:01:22
发布于 2021-09-10 03:01:22
2.6K00
代码可运行
举报
运行总次数:0
代码可运行

概述

想写本文,主要是源于前两天有个老师找到我说让我录一个大概半个小时的视频,跟大家分享一下各webgis框架之间的区别以及在应用的过程中应该如何选择。其实之前也有学员问过类似的问题,当时只是针对他们的疑问做了回答。虽然各个框架都有用过,有几个还算比较熟悉,但并没有全面的对各个框架进行过比较,刚好借着这个机会,一方面重新对各个框架有一个比较全面的认识,另一方面对各个框架做一个比较,以便后面使用的时候有一个较好的选择。

框架介绍

Openlayers

最新版本

v6.5.0

简介

OpenLayers makes it easy to put a dynamic map in any web page. It can display map tiles, vector data and markers loaded from any source. OpenLayers has been developed to further the use of geographic information of all kinds. It is completely free, Open Source JavaScript, released under the 2-clause BSD License (also known as the FreeBSD).

核心类
示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!doctype html>
<html lang="en">
<head>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.5.0/css/ol.css" type="text/css">
  <style>
      html, body, .map {
          height: 100%;
          width: 100%;
          padding: 0;
          margin: 0;
          overflow: hidden;
      }
  </style>
  <script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.5.0/build/ol.js"></script>
  <title>OpenLayers example</title>
</head>
<body>
<div id="map" class="map"></div>
<script type="text/javascript">
    var map = new ol.Map({
        target: 'map',
        layers: [
            new ol.layer.Tile({
                source: new ol.source.OSM()
            })
        ],
        view: new ol.View({
            center: ol.proj.fromLonLat([37.41, 8.82]),
            zoom: 4
        })
    });
</script>
</body>
</html>

Leaflet

最新版本

Leaflet 1.7.1

简介

Leaflet is the leading open-source JavaScript library for mobile-friendly interactive maps. Weighing just about 39 KB of JS, it has all the mapping features most developers ever need. Leaflet is designed with simplicity, performance and usability in mind. It works efficiently across all major desktop and mobile platforms, can be extended with lots of plugins, has a beautiful, easy to use and well-documented API and a simple, readable source code that is a joy to contribute to.

核心类
示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!doctype html>
<html lang="en">
<head>
  <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css"/>
  <style>
      html, body, .map {
          height: 100%;
          width: 100%;
          padding: 0;
          margin: 0;
          overflow: hidden;
      }
  </style>
  <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script>
  <title>Leaflet example</title>
</head>
<body>
<div id="map" class="map"></div>
<script type="text/javascript">
    var map = L.map('map').setView([36.897, 103.572], 4);
    L.tileLayer('https://b.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);
</script>
</body>
</html>

MapboxGL

最新版本

v2.2.0

简介

Mapbox GL JS is a JavaScript library that uses WebGL to render interactive maps from vector tiles and Mapbox styles. It is part of the Mapbox GL ecosystem, which includes Mapbox Mobile, a compatible renderer written in C++ with bindings for desktop and mobile platforms.

核心类
示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Display a map on a webpage</title>
  <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
  <link href='https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.css' rel='stylesheet' />
  <script src="https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.js"></script>
  <style>
      html, body, .map {
          height: 100%;
          width: 100%;
          padding: 0;
          margin: 0;
          overflow: hidden;
      }
  </style>
</head>
<body>
<div id="map" class="map"></div>
<script>
    var style = {
        "version": 8,
        "name": "Dark",
        "sources": {
            "XYZTile": {
                "type": "raster",
                "tiles": ['https://b.tile.openstreetmap.org/{z}/{x}/{y}.png'],
                "tileSize": 256
            }
        },
        "layers": [{
            "id": "XYZTile",
            "type": "raster",
            "source": "XYZTile",
            "minzoom": 0,
            "maxzoom": 17
        }
        ]
    };
    var map = new mapboxgl.Map({
        container: 'map',
        style: style,
        center: [103.572, 36.897],
        zoom: 3
    });
</script>
</body>
</html>

Maptalks

最新版本

V0.49.3

简介

maptalks.js was born for a map-centric project to help YUM! China (the most successful food chain in China) manage and analyze spatial data all over the country for choosing locations of new KFC and PizzaHut restaurants. After verified in many projects of government depts and enterprises, we are glad to open source it, and hoping it can help you deliver better mapping projects.

核心类
示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE>
<html>
<head>
  <meta charset="UTF-8" />
  <title>Maptalks Quick Start</title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/maptalks/dist/maptalks.css">
  <style>
      html, body, .map {
          height: 100%;
          width: 100%;
          padding: 0;
          margin: 0;
          overflow: hidden;
      }
  </style>
  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/maptalks/dist/maptalks.min.js"></script>
</head>
<body>
<div class="map" id="map"></div>
<script type="text/javascript">
    var map = new maptalks.Map('map', {
        center: [103.572, 36.897],
        zoom: 4,
        baseLayer: new maptalks.TileLayer('base', {
            'urlTemplate' : 'https://b.tile.openstreetmap.org/{z}/{x}/{y}.png'
        })
    });
</script>
</body>
</html>

Arcgis for js

最新版本

4.18

简介

ArcGIS API for JavaScript就是ESRI公司用JavaScipt语言编写的一套程序接口。用户可以通过调用API获取ArcGIS server提供的服务,例如浏览、编辑、渲染地图,以及一些常用的空间分析功能。

示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
  <title>Intro to MapView - Create a 2D map</title>
  <style>
      html, body, .map {
          height: 100%;
          width: 100%;
          padding: 0;
          margin: 0;
          overflow: hidden;
      }
  </style>
  <link rel="stylesheet" href="https://js.arcgis.com/4.19/esri/themes/light/main.css" />
  <script src="https://js.arcgis.com/4.19/"></script>
  <script>
      require(["esri/layers/WebTileLayer", "esri/Map", "esri/views/SceneView"], function(WebTileLayer, Map, SceneView) {
          var map = new Map({
              ground: "world-elevation"
          });
          var view = new SceneView({
              container: "map",
              map: map,
              zoom: 4,
              center: [103.572, 36.897]
          });
          var tiledLayer = new WebTileLayer({
              urlTemplate: "https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"
          });
          map.add(tiledLayer);
      });
  </script>
</head>
<body>
<div id="map" class="map"></div>
</body>
</html>

高德API

最新版本

v2.0

简介

高德地图 JS API 是一套 JavaScript 语言开发的的地图应用编程接口,移动端、PC端一体化设计,一套 API 兼容众多系统平台。目前 JS API 免费开放使用。JS API 提供了2D、3D地图模式,满足绝大多数开发者对地图展示、地图自定义、图层加载、点标记添加、矢量图形绘制的需求,同时也提供了 POI 搜索、路线规划、地理编码、行政区查询、定位等众多开放服务接口。

示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
  <style>
      html, body, .map {
          height: 100%;
          width: 100%;
          padding: 0;
          margin: 0;
          overflow: hidden;
      }
  </style>
  <script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=c002f8d098d53ba8815a61fd11b67627"></script>
</head>
<body>
<div class="map" id="map"></div>
<script>
    var tile = new AMap.TileLayer({
        getTileUrl: 'https://b.tile.openstreetmap.org/[z]/[x]/[y].png'
    });
    var map = new AMap.Map('map', {
        center: [103.572, 36.897],
        layers: [
            tile
            // new AMap.TileLayer.Satellite(),
            // new AMap.TileLayer.RoadNet()
        ],
        zooms: [2,18],//设置地图级别范围
        zoom: 4
    });
</script>
</body>
</html>

百度API

最新版本

v1.0

简介

百度地图JavaScript API GL v1.0是一套由JavaScript语言编写的应用程序接口,可帮助您在网站中构建功能丰富、交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5特性的地图开发。百度地图JavaScript API支持HTTP和HTTPS,免费对外开放,可直接使用。接口使用无次数限制。

示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Hello, World</title>
  <style>
      html, body, .map {
          height: 100%;
          width: 100%;
          padding: 0;
          margin: 0;
          overflow: hidden;
      }
  </style>
  <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=LSVyVW3OmR4NgINEsMc4QfgrfYXRnNfu">
  </script>
</head>

<body>
<div id="map" class="map"></div>
<script type="text/javascript">
    var map = new BMapGL.Map("map");
    var point = new BMapGL.Point(103.572, 36.897);
    map.centerAndZoom(point, 4);
    map.enableScrollWheelZoom(true);
</script>
</body>
</html>

框架比较

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Mysql长事务总结
在结果中idletime是计算产生的,也是事务的持续时间。但事务的trxquery是NUL,这并不是说事务什么也没执行,一个事务可能包含多个SQL,如果SQL执行完毕就不再显示了。当前事务正在执行,innodb也不知道这个事务后续还有没有sql,啥时候会commit。 因此trx_query不能提供有意义的信息。
mingjie
2022/05/12
8780
Mysql长事务总结
20个MySQL运维案例,请查收!
墨墨导读:日常MySQL运维中,会遇到各种各样的问题,下面分享二十个MySQL运维案例,附有问题的分析和解决办法,希望你遇到同样的问题的时候,可以淡定地处理。
数据和云
2020/10/27
1.3K0
20个MySQL运维案例,请查收!
什么是大事务?以及大事务产生的问题
我这里按公司实际场景,规定了,每次操作/获取数据量应该少于5000条,结果集应该小于2M
终有救赎
2023/12/14
7020
MySQL找出未提交事务的信息
我们经常会碰到这样的情况,某个事务执行完了未提交,后续再来一个DDL和DML操作,导致后面的session要么处于waiting for metadata lock,要么是锁等待超时。这时我们往往只能找到这个未提交的事务的事务id和session id,但是一般都处于sleep状态,不好分析事务内容到底是什么,所以通常都是粗鲁地kill这个session后解决问题,但是应用层的研发人员往往找不到到底是哪个事务引起的,后面再出现问题时还要重复kill。
用户1148526
2020/03/31
5.1K0
MySQL数据库故障分析-锁等待(一)
有一张权限表,同时执行了delete和truncate操作,并且长时间没有提交,导致metadata lock无法释放,应用登录时无法正常读取权限表,导致应用无法登录。
PHP开发工程师
2022/06/17
1.2K0
【转】MySQL生产堵塞严重,定位堵塞源头
原文地址 https://www.modb.pro/db/1718151901849133056
保持热爱奔赴山海
2025/02/12
680
[MYSQL] show engine innodb status中的死锁 分析
很久以前(也才2年)写过一个解析innodb_status的脚本. 看起来像那么回事, 其实就是做了个翻译和总结.
大大刺猬
2024/08/26
7280
[MYSQL] show engine innodb status中的死锁 分析
MySQL 5.6中如何定位DDL被阻塞的问题
在上一篇文章《MySQL 5.7中如何定位DDL被阻塞的问题》中,对于DDL被阻塞问题的定位,我们主要是基于MySQL 5.7新引入的performance_schema.metadata_locks表。提出的定位方法,颇有种"锦上添花"的意味,而且,也只适用于MySQL 5.7开始的版本。
星哥玩云
2022/08/17
4490
MySQL-长事务详解
『入门MySQL』系列文章已经完结,今后我的文章还是会以MySQL为主,主要记录下近期工作及学习遇到的场景或者自己的感悟想法,可能后续的文章不是那么连贯,但还是希望大家多多支持。言归正传,本篇文章主要介绍MySQL长事务相关内容,比如说我们开启的一个事务,一直没提交或回滚会怎样呢,出现事务等待情况应该如何处理,本篇文章将给你答案。
MySQL技术
2019/09/23
3.4K0
【MySQL】metadata lock问题
MySQL使用DML来管理对数据库对象的并发访问,并确保数据一致性。DML不仅适用于表,还适用于模式和存储程序(过程、函数、触发器和计划的事件)
用户5522200
2020/06/11
1.5K0
Waiting for global read lock的查杀
生产环境,假如不小心有个Waiting for global read lock 锁出现(例如flink cdc全量抽取数据),很容易造成生产事故。
保持热爱奔赴山海
2024/09/25
3030
【说站】Mysql长事务有什么影响
1、长事务意味着系统中会有一个非常旧的事务视图。在提交此事务之前,应保留回滚记录,这将导致大量的存储空间。
很酷的站长
2022/11/24
6380
【说站】Mysql长事务有什么影响
MySQL5.7+查看Waiting for table metadata lock 锁情况
Waiting for table metadata lock 这个mdl锁,我们最常见,这篇先拿它开刀。
保持热爱奔赴山海
2020/07/27
3.6K0
MySQL5.7+查看Waiting for table metadata lock  锁情况
为什么要避免大事务以及大事务如何解决?
https://juejin.im/post/5d837d2c6fb9a06b05182737
lyb-geek
2022/03/04
7410
有趣的statement stack
在使用events_statements_current的过程中发现,同一线程在同一时刻,可能有多条记录,与直观感觉不太一样,于是跟踪了一下内部实现,有了本文。
老叶茶馆
2023/02/18
3130
有趣的statement stack
MOP 系列|MOP 三种主流数据库常用 SQL(二)
MOP 不用多说,指的就是 MySQL、Oracle、PostgreSQL 三种目前最主流的数据库,MOP 系列打算更新 MOP 三种数据库的索引知识、高可用架构及常用 SQL 语句等等,上面已经更新了 MOP 索引相关的文章,今天打算整理一下这三种数据库的常用 SQL 知识,由于文章过长,今天更新中间的一篇之 MySQL 篇。第一篇 Oracle 相关的详见下方链接:MOP 系列|MOP 三种主流数据库常用 SQL(一)。
JiekeXu之路
2024/05/28
1080
MOP 系列|MOP 三种主流数据库常用 SQL(二)
MYSQL 监控 performance_schema 拿得起 不放下(1))
随着MYSQL的脚步越来越快,(更新的速度),觉得原来的监控的方式是不是也需要进行进一步的探索,当然现在的监控市场云龙混杂,成型的模式例如 percona pmm, 还有国产的蓝鲸,但这些监控在好,方式在炫酷,但也不能阻挡对数据库底层的监控的知识掌握,否则就只能看图说话,让人心里不踏实。另外很多公司的监控指标还需要灵活对待,不知道底层的监控参数输出,有怎么能开发出自己的监控系统。
AustinDatabases
2020/07/30
9130
MYSQL 监控  performance_schema  拿得起 不放下(1))
[MYSQL案例][023] 从库查询操作导致主从延迟增大
发现是执行DDL操作, 状态是Waiting for table metadata lock 也就是有人拿着mdl不放.
大大刺猬
2023/11/17
3170
[MYSQL案例][023] 从库查询操作导致主从延迟增大
技术分享 | MySQL 的 MDL 锁解惑
网名 bisal ,具有十年以上的应用运维工作经验,目前主要从事数据库应用研发能力提升和技术管理相关的工作,Oracle ACE ,腾讯云TVP,拥有 Oracle OCM & OCP 、EXIN DevOps Master 、SCJP 等国际认证,国内首批 Oracle YEP 成员,OCMU 成员,《DevOps 最佳实践》中文译者之一,CSDN & ITPub 专家博主,公众号"bisal的个人杂货铺",长期坚持分享技术文章,多次在线上和线下分享技术主题。
爱可生开源社区
2022/05/23
1.1K0
技术分享 | MySQL 的 MDL 锁解惑
为什么MySQL没有负载,但交易却跑不动?
在MySQL的数据库中,我们有时会发现MySQL数据库明明没有负载,CPU、硬盘、内存和网络等资源都很空闲,但很多SQL都pending在哪儿,MySQL数据库无法处理交易。这是怎么回事呢?
姚远OracleACE
2023/11/01
3180
为什么MySQL没有负载,但交易却跑不动?
相关推荐
Mysql长事务总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验