Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vue3 + TS + Leafletjs 打造企业级原神大地图-项目初步实战
Leaflet 是一个开源的 JavaScript 库,用于在 Web 页面上创建互动地图。它轻量级、高效且易于使用,非常适合进行地理信息系统(GIS)开发。
用户11190134
2024/07/01
3790
地图中的鼠标移动响应
假设如下场景:首先地图加载一个WMS或者切片,wms为POI或者切片上有POI,我们知道WMS或者切片是无法做到像Marker或者矢量的事件相应的,但是我们又需要对这些POI点进行响应,这就不太好办了。基于此想法,本文讲述此想法的实现思路以及OL2和Arcgis中的实现方式。
牛老师讲GIS
2018/10/23
1.8K0
地图中的鼠标移动响应
WebGis技术汇总
WebGIS系统通常都围绕地图进行内容表达,但并不是有地图就一定是WebGIS,所以有必要讨论下基于Web的地图API分类及应用场景。
码客说
2023/07/11
9040
WebGIS开发框架及其特点
WebGIS(Web Geographic Information System)是基于Web技术的地理信息系统,能够通过浏览器实现地理数据的展示、分析和交互。以下是常见的WebGIS开发框架及其特点。
数字孪生开发
2024/12/31
2320
WebGIS开发框架及其特点
地图可视化的艺术:深入比较Mapbox、OpenLayers、Leaflet和Cesium,不同场景下应如何选择地图库
在现代前端开发中,地图应用变得越来越重要,特别是在数据可视化、地理信息系统和移动应用中。本文将详细比较四款流行的地图库:Mapbox、OpenLayers、Leaflet 和 Cesium,分析它们的特点、功能、开源情况、包体积、市场占有率、适宜人群与应用环境,并提供安装与基础使用代码示例。
watermelo37
2025/01/22
7940
地图可视化的艺术:深入比较Mapbox、OpenLayers、Leaflet和Cesium,不同场景下应如何选择地图库
openlayers4结合高德地图API实现路径规划
概述 本文讲述如何结合高德地图API实现路径导航以及在Openlayers4中的展示。 效果 实现 获取数据 数据的获取是通过高德的API来实现,实现代码如下: <!doctype html> <
牛老师讲GIS
2018/10/23
1.6K0
openlayers4结合高德地图API实现路径规划
零基础上手WebGIS+智慧校园实例(1)【html by js】
等下再更新一下1. WebGIS矢量图形的绘制(超级详细!!),2. WebGIS计算距离, 以及智慧校园实例 with 3个例子!!!!,尽情期待!!!
用户11404404
2024/12/13
1770
零基础上手WebGIS+智慧校园实例(1)【html by js】
leaflet加载天地图
leaflet是一个轻量级的并且开源的地图框架,是由esri发起的,由于其轻量、简单而被大家喜欢,本文带你学习如何在leaflet中加载天地图。
牛老师讲GIS
2018/10/23
4.4K0
Arcgis for js,Openlayers中加载GeoJSON
在前文中,讲述了在JAVA环境下如何将shp转换为GeoJSON,在本文,分别讲述在Arcgis for js,Openlayers2和Openlayers3中加载展示GeoJSON。
牛老师讲GIS
2018/10/23
4.4K0
Arcgis for js,Openlayers中加载GeoJSON
WKT转换工具terraformers
前面的文章中,提到了Arcgis中实现wkt转换为geometry,但是这种转换仅实现了简单的点(point)、线(polyline)和面(polygon)的转换,对于复杂点或者复杂多边形没有涉及,在本文讲述通过terraformers加载展示wkt。
牛老师讲GIS
2018/10/23
1.2K0
WKT转换工具terraformers
WebGIS开发框架及特点
WebGIS开发框架是用于构建基于Web的地理信息系统(GIS)应用程序的软件工具和技术的集合。它们提供了一组预先构建的组件、API和工具,简化了WebGIS应用的开发过程。
数字孪生开发
2025/02/12
1490
WebGIS开发框架及特点
用可视化地图讲照片的故事(Python+Leaflet)
手机和数码相机拍的照片里除了我们能看到的RGB像元数据,还包含了拍摄时间、图像分辨率、感光值、GPS坐标等属性,记录在Exif(Exchangeable image file format)模块里。
数据森麟
2019/09/27
2K0
用可视化地图讲照片的故事(Python+Leaflet)
【ArcGIS JS API + eCharts系列】实现地图上二维图表的绘制
本文主要介绍使用ArcGIS JS API 4.14和eCharts 4.7.0来实现在地图上绘制二维图表中的柱状图的实现步骤。
X北辰北
2022/02/21
2.1K0
【ArcGIS JS API + eCharts系列】实现地图上二维图表的绘制
Vue项目使用leaflet+heatmap.js加载热力图
最近做数字工程实践涉及到大量的地图操作,刚开始跳过依赖于supermap iclient for JavaScript,但是越做深入越发现局限性太大,于是开始考虑使用开源地图库做各项操作,本文记录在vue项目中引入原生leaflet及heatmap打开地图及显示热力图的各项操作。
宋天伦
2020/07/16
5.1K0
一文让你彻底掌握ArcGisJS地图管理的秘密
使用ArcGisJS开发地图,首先需要引入ArcGis的Js文件和CSS文件,引入方式有两种,一种是官网JS引用,一种是本地JS引用。如下:
Kiba518
2021/08/18
8710
一文让你彻底掌握ArcGisJS地图管理的秘密
Openlayers3加载天地图
在前文中分别讲到了在Arcgis for js、Openlayers2中去加载天地图,同时也讲到了天地图的离线加载方式。在本文,讲述在Openlayers3中实现在线/离线的天地图的加载。
牛老师讲GIS
2018/10/23
2K0
一个GISER 6.7的祝福
一年一度的高考今天开始了,回想10年前,那是我第一次高考;10年后,作为一个GISER,在此给大家献上一个GISER的祝福,祝愿各位考生:考神附体,考完报考GIS专业(LZUの,给自己的母校打个广告)……
牛老师讲GIS
2018/10/23
8800
一个GISER 6.7的祝福
Openlayers3结合百度地图API实现定位与展示
本文结合Openlayers3和百度地图API实现web上地图的展示,定位与展示功能,并可通过PC或者移动端访问。
牛老师讲GIS
2018/10/23
4.5K0
Openlayers3结合百度地图API实现定位与展示
Arcgis for js加载百度地图
在前面的文章里提到了Arcgis for js加载天地图,在本节,继续讲解如何在Arcgis for js中加载百度地图。
牛老师讲GIS
2018/10/23
4.8K0
Arcgis for js加载百度地图
ubuntu中安装tippecanoe并切片
本文是一片”水文”,记录一下如何在ubuntu中用tippecanoe制作矢量切片。
牛老师讲GIS
2022/12/18
1.5K0
ubuntu中安装tippecanoe并切片
相关推荐
Vue3 + TS + Leafletjs 打造企业级原神大地图-项目初步实战
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验