Skip to content

API 版本对比与选型指南

GMap SDK 提供三套 API 层级,面向不同团队规模和技术栈偏好。

三套 API 定位

特性简易版标准版专业版
包名@gmap/simple@gmap/standard@gmap/advanced
编程范式工厂函数 + 链式调用ES 模块 + 类体系门面模式 + 子门面
类型安全
Tree-shaking一般
代码量
灵活性
二三维共存enterCoexistenceG.coexistfacade.engine.enterCoexistence

使用场景对比

简易版 G

适合以下场景:

  • 业务逻辑简单的地图展示页面
  • 后端开发人员快速集成地图功能
  • 地图作为辅助功能而非核心功能的系统
  • 需要最少代码量的场景

典型用法:

ts
import G from "@gmap/simple";
G.use("ol", () => new OlAdapter(), { default: "2d" });
const map = G.map({ target: "map", engine: "ol" });
G.tileLayer({ url: "..." }).addTo(map);
G.marker({ coord: [116, 39] }).addTo(map);

标准版

适合以下场景:

  • 以地图为核心功能的 Web 应用
  • 需要精细控制图层、符号、渲染器的业务
  • 需要完整 TypeScript 类型提示的团队
  • 需要 Tree-shaking 优化包体积的项目
  • 多人协作的中大型项目

典型用法:

ts
import {
  createMap,
  FeatureLayer,
  GeoJsonSource,
  SimpleRenderer,
  MarkerSymbol,
} from "@gmap/standard";
const map = await createMap({ target: "map", engine: "ol" });
const src = new GeoJsonSource({ data: geojson });
const layer = new FeatureLayer({
  source: src,
  renderer: new SimpleRenderer({ symbol: new MarkerSymbol({ color: "red" }) }),
});
map.addLayer(layer);

专业版

适合以下场景:

  • 需要关注点分离的大型系统
  • 多团队协作、模块化开发的项目
  • 需要运行时切换引擎(2D/3D 切换)
  • 需要统一管理相机、数据、交互、样式等子系统
  • 有架构师角色参与的企业级项目

典型用法:

ts
import { createMapFacade } from "@gmap/advanced";
const app = await createMapFacade({ target: "map", engines: "ol" });
app.camera.flyTo({ center: [121, 31], zoom: 12 });
app.layers.addTile({ url: "..." });
app.data.loadGeoJson(geojson);
app.interactions.draw("polygon");
app.selection.pick([116, 39]);

功能对比

地图与视图

功能简易版标准版专业版
创建地图G.map()createMap()createMapFacade()
设置中心map.setCenter()map.setCenter()app.camera.setCenter()
设置缩放map.setZoom()map.setZoom()app.camera.setZoom()
飞行到目标map.flyTo()map.flyTo()app.camera.flyTo()
适应范围map.fitBounds()map.fitBounds()app.camera.fit()
设置方位角map.setBearing()map.setBearing()app.camera.setBearing()
设置俯仰角map.setPitch()map.setPitch()app.camera.setPitch()
视图状态map.getView()map.getView()app.camera.getState()
坐标转换map.toCoord()map.toCoord()app.camera.toCoord()
像素转换map.toPixel()map.toPixel()app.camera.toPixel()

图层管理

功能简易版标准版专业版
栅格瓦片G.tileLayer()new RasterTileLayer()app.layers.addTile()
矢量瓦片G.vectorTileLayer()new VectorTileLayer()app.layers.addVectorTile()
GeoJSONG.geoJsonLayer()new FeatureLayer()app.layers.addGeoJson()
热力图G.heatmapLayer()new HeatmapLayer()app.layers.addHeatmap()
聚合图层G.clusterLayer()new ClusterLayer()app.layers.addCluster()
3D 瓦片G.tileset3d()new Tileset3DLayer()app.layers.addTileset3D()
点云G.pointCloud()new PointCloudLayer()app.layers.addPointCloud()
添加图层.addTo(map)map.addLayer()app.layers.add*()
移除图层--map.removeLayer()app.layers.remove()
图层列表map.getLayers()map.getLayers()app.layers.list()
切换可见--layer.setVisible()app.layers.setVisible()
清空图层----app.layers.clear()

数据源

功能简易版标准版专业版
GeoJSONG.geojson()new GeoJsonSource()app.data.loadGeoJson()
矢量瓦片源G.vectorTileSource()new VectorTileSource()--
栅格瓦片源G.rasterSource()new RasterTileSource()--
WMS 源G.wms()new WmsSource()--
WMTS 源G.wmts()new WmtsSource()--
地形源G.terrainSource()new TerrainSource()--
添加源--map.addSource()app.data.addSource()
移除源--map.removeSource()app.data.removeSource()
查询要素--layer.query()app.data.query()
导出 GeoJSON----app.data.toGeoJson()

几何类型

类型简易版标准版
PointG.geom.point()new Point()
MultiPointG.geom.multiPoint()new MultiPoint()
LineStringG.geom.lineString()new LineString()
MultiLineStringG.geom.multiLineString()new MultiLineString()
PolygonG.geom.polygon()new Polygon()
MultiPolygonG.geom.multiPolygon()new MultiPolygon()
CircleG.geom.circle()new Circle()
BoundingBoxG.geom.boundingBox()new BoundingBox()
EllipseG.geom.ellipse()new Ellipse()
Box3DG.geom.box3d()new Box3D()
Sphere3DG.geom.sphere3d()new Sphere3D()
Cylinder3DG.geom.cylinder3d()new Cylinder3D()
Cone3DG.geom.cone3d()new Cone3D()
GeometryCollectionG.geom.geometryCollection()new GeometryCollection()

符号类型

类型简易版标准版
FillSymbolG.fillSymbol()new FillSymbol()
LineSymbolG.lineSymbol()new LineSymbol()
MarkerSymbolG.markerSymbol()new MarkerSymbol()
TextSymbolG.textSymbol()new TextSymbol()
PictureSymbolG.pictureSymbol()new PictureSymbol()
IconSymbolG.iconSymbol()new IconSymbol()
GradientFillSymbol--new GradientFillSymbol()
CompositeSymbolG.compositeSymbol()new CompositeSymbol()
ModelSymbolG.modelSymbol()new ModelSymbol()
BillboardSymbolG.billboardSymbol()new BillboardSymbol()
DivIconSymbol--new DivIconSymbol()

渲染器

类型简易版标准版
SimpleRendererG.simpleRenderer()new SimpleRenderer()
UniqueValueRendererG.uniqueValueRenderer()new UniqueValueRenderer()
ClassBreaksRendererG.classBreaksRenderer()new ClassBreaksRenderer()
GraduatedSymbolRenderer--new GraduatedSymbolRenderer()
DotDensityRenderer--new DotDensityRenderer()
HeatmapRenderer--new HeatmapRenderer()
MeshRenderer--new MeshRenderer()
CustomRenderer--new CustomRenderer()

控件

控件简易版标准版
ZoomControlG.zoomControl()new ZoomControl()
CompassControlG.compassControl()new CompassControl()
ScaleBarControlG.scaleBarControl()new ScaleBarControl()
AttributionControlG.attributionControl()new AttributionControl()
LayerSwitcherControlG.layerSwitcherControl()new LayerSwitcherControl()
BasemapSwitcherControlG.basemapSwitcherControl()new BasemapSwitcherControl()
FullscreenControlG.fullscreenControl()new FullscreenControl()
GeolocationControlG.geolocationControl()new GeolocationControl()
NavigationControlG.navigationControl()new NavigationControl()
OverviewMapControlG.overviewMapControl()new OverviewMapControl()
MousePositionControlG.mousePositionControl()new MousePositionControl()
SearchControlG.searchControl()new SearchControl()
ContextMenuControlG.contextMenuControl()new ContextMenuControl()
LegendG.legendControl()new Legend()
HashStateControlG.hashStateControl()new HashStateControl()

交互

功能简易版标准版专业版
绘制G.draw()new DrawInteraction()app.interactions.draw()
编辑G.edit()new EditInteraction()app.interactions.edit()
量算G.measure()new MeasureInteraction()app.interactions.draw()
弹窗G.popup()new Popup()app.interactions.popup()
提示G.tooltip()new Tooltip()app.interactions.tooltip()
拖拽平移--map.enableDragPan()app.interactions.setInput()
滚轮缩放--map.enableScrollZoom()app.interactions.setInput()
双击缩放--map.enableDoubleClickZoom()app.interactions.setInput()
旋转--map.enableRotate()app.interactions.setInput()

样式

功能简易版标准版专业版
Mapbox 样式--new Style()app.style.apply()
设置绘制属性--style.setPaintProperty()app.style.setPaint()
设置布局属性--style.setLayoutProperty()app.style.setLayout()
设置过滤--style.setFilter()app.style.setFilter()
添加图片--map.addImage()app.style.addImage()
设置地形--map.setTerrain()app.style.setTerrain()

事件

功能简易版标准版专业版
监听事件map.on()map.on()app.on()
一次性监听map.once()map.once()app.once()
移除监听map.off()map.off()app.off()

引擎

功能简易版标准版专业版
注册引擎G.use()EngineRegistry.register()--
切换引擎--map.switchEngine()app.engine.switch()
当前引擎--map.getEngine()app.engine.current()
获取原生--map.getNative()app.getNative()

工具

功能简易版标准版专业版
距离量算G.utils.distance()Measurement.distance()app.measure.distance()
面积量算--Measurement.area()app.measure.area()
方位角--Measurement.bearing()app.measure.bearing()
缓冲区--Analysis.buffer()app.analysis.buffer()
凸包--GeomUtils.convexHull()--
简化--GeomUtils.simplify()--
坐标转换G.utils.projection.transform()ProjectionUtils.transform()--

选型建议

按团队规模

团队规模推荐版本理由
1-3 人小团队简易版代码量少,上手快,维护成本低
5-10 人中型团队标准版完整类型系统,多人协作友好
10+ 人大型团队专业版模块化架构,关注点分离

按技术栈

技术栈推荐版本理由
后端开发为主简易版API 简洁,无需深入前端地图概念
前端开发为主标准版符合前端工程化习惯
架构师主导专业版门面模式便于架构设计

按项目类型

项目类型推荐版本理由
数据可视化大屏简易版快速搭建,功能够用
GIS 业务系统标准版需要精细控制图层和符号
多引擎切换系统专业版内置引擎管理子门面
2D/3D 一体化系统专业版完整的引擎切换和视图同步能力

按功能需求

功能需求推荐版本
只需要展示地图简易版
需要自定义符号和渲染标准版
需要空间分析和量算标准版或专业版
需要运行时切换引擎专业版
需要 3D 场景效果专业版

版本迁移

简易版 → 标准版

ts
// 简易版
import G from "@gmap/simple";
const map = G.map({ target: "map", engine: "ol" });
G.tileLayer({ url: "..." }).addTo(map);

// 标准版
import { createMap, RasterTileLayer } from "@gmap/standard";
const map = await createMap({ target: "map", engine: "ol" });
map.addLayer(new RasterTileLayer({ url: "..." }));

标准版 → 专业版

ts
// 标准版
import { createMap, RasterTileLayer } from "@gmap/standard";
const map = await createMap({ target: "map", engine: "ol" });
map.addLayer(new RasterTileLayer({ url: "..." }));
await map.flyTo({ center: [121, 31], zoom: 12 });

// 专业版
import { createMapFacade } from "@gmap/advanced";
const app = await createMapFacade({ target: "map", engines: "ol" });
app.layers.addTile({ url: "..." });
app.camera.flyTo({ center: [121, 31], zoom: 12 });

四川省交通运输综合地理服务平台 地图开发框架