前言
今天打开掘金,忽然发现Mapmost的双十二促销活动出现在了广告位上
感觉很恍惚,才半年多过去,商业化进展已经这么快了吗?3月份偶然发现它家的产品,写了一篇体验文章,当时觉得是Mapbox平替,引来了不少争论,大家对戏褒贬不一。
这段时间又深度试用了他们家的产品,总得来说可圈可点, 这里把体验写下来给大家参考。
Mapmost对比Mapbox有什么亮点
1.熟悉的用法(和Mapbox一致)
不多说,你们自己看,与Mapbox初始化相比,只有授权密钥的差异,一个是accessToken,一个是userId
// Mapbox GL JS 初始化地图代码
mapboxgl.accessToken = 'pk.eyJ1Ijoiemh1ZHMiLCJhIjoiY2xoZnN5a28xMTl2bzNlcGMzcGJtczlzZCJ9.7pIETMtazm_6Y0boWAnl4A';
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v12',
center: [-74.5, 40],
zoom: 9,
});
// Mapmost SDK for WebGL初始化地图代码
let map = new mapmost.Map({
userId: '42ef2968a4d13d46ccb4a510e473831a4fa05291bdab9b936b983dc2f4af3cac',
container: 'map',
style: 'https://www.mapmost.com/cdn/styles/sample_data.json'
center: [-74.5, 40],
zoom: 9,
});
在地图接口设计和文档编排上基本都是一样的,照顾了大部分Mapbox用户,减少迁移和重构的成本
2.支持标准的MVT(Mapbox Vector Tile)
这点是我比较关心的,虽说是平替,但不是太过丸美,因为不能直接加载Mapbox官方的MVT服务,问了一下客服,说也是可以加载标准的MVT服务,只能加载他们的产品发布的emmm。。。。。
不过好消息是,Mapmost官方也提供了一个Studio,可以发布矢量地图服务,此外也支持发布影像、地形和倾斜服务,感兴趣的可以去看看。
Mapmost Studio www.mapmost.com/#/layout/st…
我登上Mapmost Studio,打开看了一下渲染效果和服务结构,就是标准的MVT,这样兼容性问题是解决了,算是能闭环了, 真的是妙啊,Mapbox Studio和Mapmost Studio,你品,你仔细品。
MVT(Mapbox Vertor Tile)docs.mapbox.com/data/tilese…
而且也支持在线编辑MVT的样式,操作逻辑和 Mapbox Studio以及高德地图的GeoHUB类似。
另外它们文档地图样式文件的描述也是一致的,服务格式都一样。
这里与客服回答的一致,服务确实与Mapbox不通用,两家的SDK和MVT都不能互相兼容,我尝试用Mapmost SDK for WebGL加载Mapbox官方的示例服务,并不能渲染,控制台抛了错误。
let map = new mapmost.Map({
userId: '42ef2968a4d13d46ccb4a510e473831a4fa05291bdab9b936b983dc2f4af3cac',
container: 'map',
style: 'mapbox://styles/mapbox/streets-v12',
center: [120.71923008473078, 31.29446443371741],
zoom: 14.7,
sky: 'light',
});
猜测是做了产品之间的绑定或者加密处理,不过这个无伤大雅,毕竟是要赚钱的。
此外对于矢量图层的操作接口,都是和Mapbox一致的,可以无缝衔接,这里就不再赘述了。
3.扩展了模型(glb、fbx、obj)图层加载和操作API
之前一直有在地图上加载3D 模型的需求,特别是一些三维可视化以及数字孪生类的项目,这点Mapbox没有原生能用的API,目前的处理方式是:
- 使用
Three.js+对应模型的Loader导入模型 - 结合Mapbox GL JS 的
自定义图层加载到地图上 - 然后渲染时做
矩阵同步和坐标转换
<script src="https://unpkg.com/three@0.126.0/build/three.min.js"></script>
<script src="https://unpkg.com/three@0.126.0/examples/js/loaders/GLTFLoader.js"></script>
const customLayer = {
id: '3d-model',
type: 'custom',
renderingMode: '3d',
onAdd: function (map, gl) {
this.camera = new THREE.Camera();
this.scene = new THREE.Scene();
// use the three.js GLTF loader to add the 3D model to the three.js scene
const loader = new THREE.GLTFLoader();
loader.load(
'https://docs.mapbox.com/mapbox-gl-js/assets/34M_17/34M_17.gltf',
(gltf) => {
this.scene.add(gltf.scene);
}
);
this.map = map;
//...
render: function (gl, matrix) {
const rotationX = new THREE.Matrix4().makeRotationAxis(
new THREE.Vector3(1, 0, 0),
modelTransform.rotateX
);
const rotationY = new THREE.Matrix4().makeRotationAxis(
new THREE.Vector3(0, 1, 0),
modelTransform.rotateY
);
const rotationZ = new THREE.Matrix4().makeRotationAxis(
new THREE.Vector3(0, 0, 1),
modelTransform.rotateZ
);
const m = new THREE.Matrix4().fromArray(matrix);
const l = new THREE.Matrix4()
.makeTranslation(
modelTransform.translateX,
modelTransform.translateY,
modelTransform.translateZ
)
.scale(
new THREE.Vector3(
modelTransform.scale,
-modelTransform.scale,
modelTransform.scale
)
)
大致数了一下,实现模型上图,至少60行代码,涉及到2个额外的库,虽说能用,说实话确实不好用,不仅实现繁琐,同时功能单一,满足不了生产项目需求,而且对开发的水平要求较高。
再看一下Mapmost的做法,这里是直接扩展了一个图层类型{ type: 'model'}, 6行代码就能实现模型上图。
map.on('load', function () {
let models_obj = ["../example_data/jinji_plaza_eastern_door_building.glb"].map(item => ({
type: 'glb',
url: item,
}));
let options = {
id: 'model_id',
type: 'model',
models: models_obj,
center: [120.67727020663829, 31.31997024841401],
callback: function (group, layer) {
}
};
map.addLayer(options);
})
我在他们文档上也看到了对应类型的描述,基于Mapbox原有的addLayer方法,新增了一个类型
另外不像Mapbox只能加载看看,这里还配套给出了很多细粒度的模型图层操作API,诸如旋转、缩放、平移、高亮、淡入淡出动画、属性选择、坐标拾取等等,用于组合实现一些复杂的业务功能。
用法也比较简单,以模型高亮为例,这里提供了三个APIselectModel、outlineModel、unOutlineModel,选中-高亮-取消高亮:
map.on('click', function (e) {
let intersect = modelLayer.selectModel(e.point)[0];
if (intersect && intersect.point) {
// 高亮选中模型
modelLayer.outlineModel([intersect.object], {
scope: 'model', // 模型轮廓范围:layer、model、default
edgeStrength: 3.0, // 轮廓强度系数
edgeGlow: 0.0, // 轮廓发光稀释
edgeColor: '#0000ff', // 轮廓颜色
enableFillColor: true, // 轮廓内部是否填充
fillColorOpacity: 0.2, // 轮廓内部填充颜色不透明度
});
} else {
// 取消高亮选中模型
modelLayer.unOutlineModel();
}
});
这个确实要点赞,不仅方便了不少,而且有更多新的用法,其实不难看出来,这背后很多应该是「从实际业务场景中抽象出来的通用接口」。
以这个批量模型加载与更新为例,你可以发现这就是一个 「大规模人员点位上图的应用案例」
如果你深入研究,甚至可以解锁更多玩法,通过调节图层样式和模型,还能做出更加趣味的风格。
4.原生支持加载3Dtiles
很遗憾,Mapbox的SDK也不能原生支持加载3Dtiles, 目前的处理方式是通过deck.gl扩展,利用Mapbox GL JS的自定义图层实现,这也是官方给的参考:
// 引入相关依赖
import {MapboxOverlay as DeckOverlay} from '@deck.gl/mapbox';
import mapboxgl from 'mapbox-gl';
import {onMounted} from "vue";
import {Tile3DLayer} from 'deck.gl'
import { Tiles3DLoader } from "@loaders.gl/3d-tiles";
let map
mapboxgl.accessToken = '...';
let deckOverlay = new DeckOverlay({
interleaved: true,
layers: []
});
onMounted(() => {
map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v12',
center: [118.94811, 33.01413],
zoom: 15,
pitch: 30,
bearing: 0
});
map.addControl(deckOverlay);
map.on('load', () => {
// 三个参数分别为模型名称,模型id,加载3d tiles对应的url
// url来源于使用cesiumLab发布的服务地址
load3DTiles('cs_model','cs_model','.../tileset.json')
});
})
function load3DTiles(name, id, url) {
const layers = deckOverlay._props.layers;
deckOverlay.setProps({
layers: [
...layers,
new Tile3DLayer({
id: id,
name: name,
data: url,
loader: Tiles3DLoader,
extruded: true, // 设置3D功能
opacity: 1, // 设置透明度
loadOptions: {
"3d-tiles": {
loadGLTF: true,
decodeQuantizedPositions: false,
isTileset: "auto",
assetGltfUpAxis: null
}
},
pickable: true, // 设置可选取
onTilesetError: (err) => {
console.log(err);
},
onTilesetLoad: (tileset) => {
console.log(tileset);
const { cartographicCenter, zoom } = tileset;
deckOverlay.setProps({
initialViewState: {
longitude: cartographicCenter[0],
latitude: cartographicCenter[1]
}
});
map.jumpTo({
center: [cartographicCenter[0], cartographicCenter[1]],
zoom: 15
});
},
pointSize: 2
})
]
});
}
</script>
<style>
body {
margin: 0;
padding: 0;
}
#map {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
}
</style>
先不说写这么一堆有点麻烦,关键是还要引入别的库,维护起来很是难受,而且对3Dtiles的图层操作API也很少,更多的是加上去看看,缺少交互功能。
反观这点Mapmost的做法和加载模型一致,同样基于Mapbox原有的addLayer方法,扩展了对3Dtiles的支持:{ type: '3dtiles'}
使用Mapmost SDK for WebGL加载3Dtiles服务
const map = new mapmost.Map({
container: 'map',
style: "********.json",
center: [120.74449559193792, 31.30775326748954],
zoom: 16,
pitch: 60,
userId: '***', // 授权码
});
map.on('load', function () {
const TILESET_URL = "*******tileset.json";
map.addLayer(
{
id: 'tile-3d-layer',
type: "3DTiles",
data: TILESET_URL,
}
)
})
另外也配套给出了坐标拾取、属性拾取、高亮、平移等接口。
总得来说,作为一个商业化产品,用法就应该做的足够简单,且品类要丰富。
另外提一下地形服务加载,这里基本和Mapbox用法和效果一致,在渲染效果上目测高于Maobox,不知道是不是我的错觉。
// Mapmost SDK for WebGL加载地形
map.addSource('mapmost-dem', {
'type': 'raster-dem',
'tiles': '****terrain/{z}/{x}/{y}.png',
'tileSize': 512,
'maxzoom': 14
});
map.setTerrain({
'source': 'mapmost-dem',
'exaggeration': 1.5
});
// Mapbox GL JS加载地形
map.addSource('mapbox-dem', {
'type': 'raster-dem',
'url': 'mapbox://mapbox.mapbox-terrain-dem-v1',
'tileSize': 512,
'maxzoom': 14
});
map.setTerrain({
'source': 'mapbox-dem',
'exaggeration': 1.5
});
5.内置Three.js模块,支持自定义扩展
其实不难看出,Mapmost加载模型的功能是基于Three.js实现的,这点他们也不藏着掖着,就直接告诉你我集成了Three模块mapmost.THREE
// 世界坐标->标准坐标->屏幕坐标
let world_vector = new mapmost.THREE.Vector3(position.x, position.y, position.z);
我打印了一下模型加载后的回调参数,发现里面有完整的网格group
这样的话我们就可以做更多的事情,three.js中对模型的API操作你都可以用,也就是说把地图场景和三维场景结合的同时,还给你留了一个扩展的入口
let obj = models.children[0].children[0];
// 坐标系参考,红绿蓝表示 xyz 轴
const axesHelper = new mapmost.THREE.AxesHelper(500);
models.children[0].add(axesHelper);
// 模型放大2倍
obj.scale.set(2, 2, 2)
// 模型沿 X 方向平移 20 米
obj.translateX(20)
// 模型绕 Y 轴旋转 90
obj.rotateY(Math.PI / 2);
如果你愿意,甚至可以重写mapmost模型图层的渲染函数,这就很好玩了。
6.标准的地图操作逻辑
目前Mapmost的三维地图操作逻辑是这样的:
- 左键双击缩放地图层级
- 长按右键旋转地图视角
- 长按左键拖动地图
- 鼠标滚轮快速缩放地图层级
严格意义上来说,这个并不算亮点,毕竟Mapbox也是如此, 但是看到Mapmost内置了Three.js,就开始有点担心是不是纯三维模式,因为之前用过Three.js和Cesium,和常见的地图操作逻辑不同,要长按滑轮旋转视角,可谓是相当难受:
不过现在看来是多虑了, Mapmost的三维地图仍然是地图的操作逻辑。
7.空间分析能力
这块的功能是Mapbox相对缺失,恰恰是Mapmost的一个创新点。
在一些复杂的场景中,会用到专业的GIS空间分析能力,比如建筑领域,规划楼层间距以及房屋密度的时候,经常会用到可视域分析和通视分析,来提前帮我们判定视野范围以及遮挡情况。
8.多格式数据融合加载能力
我看文档上描述,Mapmost SDK for WebGL支持以下类型数据和服务格式融合渲染:
(1)栅格地图服务:支持天地图、ArcGIS静/动态服务、WMS服务、WMTS服务和TMS服务。
(2)矢量地图服务:仅支持 Mapmost Studio 发布的矢量切片服务
(3)矢量数据:支持GeoJSON(EPSG:4490/EPSG:4326)数据
(4)三维模型:支持gltf/ glb/ fbx / obj 格式三维模型
(5)倾斜数据模型:由Cesiumlab发布的3DTiles(不支持纹理合并)
(6)点云:由Cesiumlab发布的3DTiles
(7)地形服务:地形支持Terrain-RGB格式
(8)I3S服务
这里有意思的是MVT只支持他们自己的产品发布的,3DTiles却兼容Cesiumlab发布的。
这么多类型的数据同时支持,确实是一个系统工程,除了格式上要做兼容以外,在接口适配、坐标系同步、性能优化、视觉效果、实用性等层面需要做很多工作,这个算上一个具有创新性的亮点。
9.内置着色器(Shader)和后处理(Post-Processing)API
我想做过三维开发的同学都遇到过,现在一些客户对项目要求越来越高,不仅实用还要好看,最好有些科技感的特效或者动效,但大多数WebGIS的开发人员很少或者没有接触过图形学编程,所以实现三维特效对他们来说确实有点难度,比如下面这些:
我最初还是从Three.js中接触到着色器相关的知识,可谓是磕磕绊绊。
Three.js自定义着色器 GLSL :baike.baidu.com/item/GLSL/2…
![]()
但是在Mapmost中,提前内置了一些常用的着色器接和后处理接口,我们只需要改改参数就行了,GLSL他们内部已经实现了。
例如:使用Mapmost实现一个粒子能量球
let options = {
id: 'model_id',
type: 'model',
callback: function (group, layer) {
let sphere = layer.addSphere({
color: "#ff0000",
radius: 100,
wSegment: 64,
hSegment: 64,
phiLength: 180,
speed: 3,
opacity: 0.8,
center: [120.74579465203592, 31.30505899929158, 0.0]
});
}
};
map.addLayer(options);
而且你不难发现,所有的效果都是基于真实经纬度坐标渲染的,以这个地理围栏特效为例,你发现围成这个围栏的数据都是具体的坐标点,这个和GeoJSON的渲染方式很类似:
let GeoFencingDiffuse = layer.addGeoFencing({
type: "diffuse",
color: "#fff60c",
speed: 3,//速度
opacity: 0.8, //透明度
height: 29.6, //高度
data: { //坐标点位数据
coordinate: [[120.673884481865016, 31.31845122412421], [120.673892295086972, 31.318434601677584], [120.673896695221984, 31.318416044287087], [120.673913297536004, 31.318339436152087], [120.674082076222007, ]
}
});
当然也可以通过不同的接口组合,做一些炫酷的场景。
这块一开始我想的是作为前面的模型图层的原子API使用的,后来发现还是想简单了,Mapmost的着色器和后处理API是可以作用在整个地图场景上,这点无疑是个小惊喜。
全场景设置三维描边
三维场景颜色调整
可能是出于方便用户理解的考虑,官方把这些接口归纳到【三维效果】和【三维场景设置】里面去了。
那么如此一来,我们可以根据项目的需求以及应用场景,结合这些API,做出不同风格的三维地图。
基于内置着色器的三维特效
//模型渐变特效
const addModelEffect = () =>{
Layer.addModelEffect(Group, [{
type: "gradient",
startColor: "rgba(63, 177, 245,.5)",
endColor: "rgba(58, 142, 255,.8)",
opacity: 0.9,
percent: 0.5
}, {
type: "flow",
speed: 1,
color: "rgba(241, 99, 114, .4)",
opacity: 0.9,
percent: 0.05
}])
Group.addFrame(0x3FB1F5);
}
//能量球
const addSphere = () => {
let sphere = Layer.addSphere({
color: "rgb(53, 108, 222)",
radius: 3300, //半径,单位米,默认为10米
segment: 1024, //构成圆的面片数
phiLength: 180,
speed: 3,
opacity: 1,
center: [120.67943361712065, 31.306450929918768]
});
let sphere2 = Layer.addSphere({
color: "rgb(219, 74, 51)",
radius: 2300, //半径,单位米,默认为10米
segment: 1024, //构成圆的面片数
phiLength: 180,
speed: 6,
opacity: 1,
center: [120.67727020663829, 31.31997024841401, 0.0]
});
}
基于后处理特效的多风格地图
对比SuperMap(超图) 和ArcGIS
这里就不比了,上面毕竟是gis行业老大哥,产品全、功能强、服务好、当然价格也贵得离谱。
Mapmost的一些不足之处:
接口功能上目前看下来算是够用,主要还是在用户体验这块,和3月份相比提升并不是很明显:
1.案例不支持在线编辑
一开始看他家文档上案例很多,想在线体验一下,没想到点进去全是动图,还得把代码复制到本地跑,说实话有点失望。
同类产品都有在线编辑器,修改保存后就能在线看效果,高德地图做的就很好, 这个功能并不难实现,希望Mapmost官方尽快优化吧。
2.捆绑销售
最开始我只想买一个SDK试试,因为我对矢量地图没有强需求,更感兴趣的是三维模型,但是发现他们的产品不单卖,都要捆绑 Mapmost Studio 销售,这就有点难受了。
如果单出一个SDK,把价格降一降,或者推出购物车,让用户自己选购,需要什么买什么,我觉的更合理一些,类似于超图这种。
3.文档不够细致
作为一个商业软件,首先得有卖相,个人觉得Mapmost内容是有了,但对比另外几家图商的文档,还是有些问题:
- 字号太多,字体大小粗细不一,颜色对比度过高,
没遵守设计规范 - 配图随意,图片太糊,视觉效果打折扣,
看起来比较随意廉价 - 缺少暖色调,过于冷淡,缺少名词解释,更像是
「技术文档」,而不是「产品文档」 - 部分章节内容的衔接缺乏逻辑和递进关系,经常
不知道下一步怎么办 - 文字描述缺少亲和力,像是在命令,而不是指导用户使用,没有
你,我们这种称呼 - 少了一些元素点缀,如提醒、警告、建议等,
页面内容单一,平铺直叙.
Mapmost的文档
再来看看同行业的产品文档:
Mapbox的文档
![]()
高德地图的文档
![]()
超图的文档
![]()
不过对于程序员来说不影响食用,但对Mapmost官方来说是拉低了产品形象。
4.教程太少
关于社区和教程,作为开发者,这是我比较关心的内容,和他们客服聊了一会,得知他们在B站、知乎、公众号上都开了官号
主要的视频教程都放在了B站上,知乎和微信上是一些科普和技术教程, 中间夹杂一些广告。
不过你仔细找找,课程也有,不过很少,基本是一些碎片化的教程。
这块可以向超图学习,出一些产品的系列课程或者免费课程,让更多的人有办法使用你们家的产品,另外课程本身也能作为产品的资源出售,也算是一举两得了,我想更多学生用户喜欢看着视频学习。
超图GIS学堂 edu.supermap.com/#/Index
5.缺少mapbox3.0最新特性
没在Mapmost上看到Mapbox3.0的新特性,比如标注样式、灯光、矢量地图样式改进、阴影等,估计是还没适配,期待更新吧。
Mapbox 3.0 三维地图昼夜切换效果
为什么Mapmost是收费的?
因为太老实,这是我能想到的答案:
地图商免费背后的陷阱
SDK免费
很多人说Mapbox、Cesium、百度地图免费啊,他们的SDK确实免费,可以随便用,甚至还提供CDN和github源码。
服务花大钱
但是事实真的不用花钱吗? 仔细看看他们的官网,不难发现收费项都是【服务】,无论是地图数据服务还是后端分析服务,都是按量收费的,相当不便宜。
以Mapbox GL JS 商业授权为例, 10万次的调用量就要250美元(约合人民币1800元),也就是说你这个地图被用户打开10万次就得给他们1800元
这还只是一个光秃秃地图,图层服务和查询API还要额外收费。
百度和高德也是如此,收费甚至还更贵,不过这不能怪人家,毕竟在国内是顶级图商,主打C端用户,质量这块还是有保证的。
当然还有其他一些厂商,大都是这种模式,免费给你用,但要用的爽就得掏钱,以至于后面我一看到【免费】2字就PTSD。
看到这我想大家应该明白了,所谓的免费,相当于说请你吃饭,给你一碗饭,但是菜按量收费,【倒不如一开始就告诉我没有免费的午餐吃了,饭菜都要收钱】,当然你不用的我的也可以,你自己做数据和服务也行,但这个技术成本就上来了。
另一方面,介于中美两国的关系比较微妙,如今国内很多政企项目,在软件采购上面更加倾向于国产化,同时要私有化部署、数据服务本地化、还要支持国产信创软硬件,就这几点点要求,Mapbox注定在中国市场很难存活。
我身边这样的例子也不少,前期免费产品用着有多少爽,后期迁移就有多痛苦。
况且2021年Mapbox退出中国后,国内官网无法访问,知乎和微信公众号停运,相关教程停更,国内程序员要翻墙到外网才能看到文档,对项目组来说学习成本巨大,仿佛看到了当年谷歌退出中国。
当然并不是说Mapbox不行,我个人最喜欢用的就是Mapbox,他们的产品系列是我用过最全的一家,号称世界上最美的地图也不是吹的,符合多数人的审美,退出中国我还是觉得挺遗憾的。
开不开源这件事
Cesium:可能以后就不开了
再说开源,2024年,Cesium 被 Bentley 收购,这个消息在业内造成了不小的轰动,而 Bentley本身就没有开源的基因,吃相更难看,这意味着什么就不言而喻了,我了解到一些同行之前用Cesium就在找替换品了,生怕哪天忽然收费了措手不及 。
至于国内的Cesiumlab,本身就是彻头彻尾的商业化公司,不过也算是敞亮,一开始就告诉你用我的东西要花钱。
www.cesiumlab.com/cesiumlabpu…
![]()
有意思的是他们把源码都拿出来卖了, 这也算是【开源】吧。
Mapbox:开了,但又没完全开
Mapbox GL JS 1.0,这个版本是在开源许可下发布的。对于1.0版本,用户可以在开源许可证(如BSD、MIT等)的条件下,自由地使用、修改和分发代码,而无需支付费用或遵守严格的商业条款。
到了Mapbox GL JS 3.0,情况就不同了。从2.0版本开始Mapbox GL JS采用商业许可模式,说明3.0版本很也是商业许可,这意味着使用3.0版本的用户需要根据Mapbox的定价策略来购买使用许可,且可能受到一些使用上的限制。
想想也是合理的,毕竟3.0版本是一次大更新,伴随着在中国推广的不顺利,市场占有率有所收缩,官方也不想给白嫖了,所以说开源本身就是「伪命题」,免费的背后才是最贵的。
况且在当前的经济大环境下,大家都要赚钱吃饭,谁也不能一直「为爱发电」, 你看连尤大也开始众筹了。
不过话又说回来,SDK本身收费确实怪怪的,我还没体验,就开始付钱,这个有违背常识,尤其是在程序员的角度,很多人都理所当然的认为工具本身不该收费,所以这里提个小小的建议,如果Mapmost官方能刷到这篇文章,可以考虑出一款免费版的SDK,然后推出其他服务收费项。
比如你们家 Mapmost Alpha 内置的全国的矢量地图,我是真的喜欢,还能一键换风格,如果能拿出来单卖我肯定愿意付费。
所以,到这里,我认为Mapmost还是收费比较诚实,你花钱买个安心服务。
Mapmost值不值花钱买?
首先肯定:值得花钱体验
我是花1999买了一年,虽说是Mapbox平替,但的确有不少创新点,比如三维模型和后处理相关的API,恰恰是我需要的,因为本身我就在用mapbox,可以平滑的迁移过去。
因为整体来看,Mapmost更像是一个具有国GIS内行业特色的Mapbox,这点和超图类似,不过他们目前好像没有面向C端的产品,目前的几款产品都是基于业务需求深度定制,主打toB和toG市场,对国产化适配还算可以,因为本身我们就做政府类的项目比较多,这块还是比较吸引我的。
Mapmost官网宣传资料
如果你是想体验一下,也可以花99买一个教育版的看看,毕竟产品本身的价值远超这个价格。如果你是项目上在用,趁着活动期间4折买一年,最重要的是,最近他们搞活动送【智慧工厂】和【智慧园区】项目源码,我打开跑了一下,质量还挺高的,带有完整的交互和业务逻辑。
这大概是我看到过赠品里面最好看的了
智慧园区项目源码
![]()
![]()
智慧工厂项目源码
![]()
![]()
![]()
模型、UI素材能给的都给了,感觉源码的价格都比产品本身要值钱,1999也是很值得。
另外整个项目都是他们SDK已有的接口开发的,所以也是学习的好途径。
Mapmost的其他产品
我看他们也出了类似于Cesium for Unreal的 SDK,这块我不是很感冒,也就没去体验,至于Mapmost SDK Lite 没点进去看过。
还有就是Mapmost Alpha,一个低代码平台,我之前有篇文章也发过了,功能有些单一,不过里面的地图资源挺多的,感兴趣的可以去体验下。
最后
没想到断断续续写了4万多字,提到国产,尤其是在软件这块,给大家的固有印象就是【东施效颦】,不过这个也好理解,毕竟我们人生中第一门编程语言都是外国人发明的,习惯这件事一旦养成很难替换,但换个角度考虑一下,国产软件多一家,我们就多了一种选择,商家内卷利好我们普通用户。
另外,本次文章不针对任何一个厂家,各家的产品都有优缺点,我是站在用户的角度客观评测,希望大家能理性选择。