常见问题列表
切记
所有图层id
属性均不可变更,如果不需要动态调整图层顺序,无需设置图层id
属性值。
1. 地图无法显示
- 检查浏览器控制台是否有报错
- 检查MbMap组件center属性是否设置正确
- 检查MbMap组件zoom属性是否设置正确
2. SymbolLayer图层无法显示
- 检查浏览器控制台是否有报错
- 检查图层上的点经纬度值是否设置正确,确保经纬度值是
number
类型
3. 字体文件缺失导致怪异问题
如遇到如下问题,需检查Mapbox字体文件是否正常载入:
- 点位、聚合点不展示
- 聚合散开行为错误
- 缓冲区配置countable属性,而字体文件配置错误,会导致缓冲区显示不全
解决方法:MbMap组件上设置glyphs
属性
4. WMTS图层范围溢出(tileRow / tileCol out of range)
- WMTS图层坐标系与地图坐标系不一致
解决方法:保持MbMap组件上crs
属性值和WMTS图层坐标系值一致
- WMTS图层的起始 index 值不一致;Mapbox 瓦片图层 index 计算起始值为1,而瓦片服务的 index 起始值为0
解决方法:
- 强制修改请求瓦片的 url,将 TileMatrix=EPSG:4326:{Z} 修改为 TileMatrix=EPSG:4326:{Z-1},示例代码如下:
- 如果由超图提供服务,可使用如下方式加载底图
html
<mb-url-template-layer
url="http://100.66.100.156:8090/iserver/services/map-HuangLingXianDiTuPeiTu/rest/maps/%E9%BB%84%E9%99%B5%E5%8E%BF%E5%BA%95%E5%9B%BE%EF%BC%88%E6%B5%85%E8%89%B2%E7%89%88%EF%BC%89?prjCoordSys=%7B%22epsgCode%22:3857%7D"
:extendSource="{
rasterSource: 'iserver'
}"
/>
5. 瓦片上的文字很小,需要放大
一般这种情况出现在高分辨率屏幕(如 8704*3456)上,且地图厂商也不再配合发布字体更大的底图时,可通过设置 WMTS 图层的 tileSize (设置为600)放大底图,代码如下:
6. 双核浏览器显示不支持webGL问题
一般是浏览器设置问题:
- 浏览器输入 chrome://gpu 查看webgl的设置情况 如果是 disabled 表示关闭了
- 浏览器输入 chrome://flags 找到webgl相关选项选择开启,然后重启浏览器
7. 非ESPG:3857坐标系示例
- ESPG:4490(CGCS2000)
html
<mb-map
crs='EPSG:4490'
...
>
...
</mb-map>
- ESPG:4326(WGS84) 如果显示不正确,请参考问题4的解决方式
html
<mb-map
crs='ESPG:4326'
...
>
...
</mb-map>
- EPSG:4526
ts
import proj4 from 'proj4';
proj4.defs('EPSG:4526', '+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs');
const WKT_4526 = `PROJCS["CGCS2000 / 3-degree Gauss-Kruger zone 38",
GEOGCS["China Geodetic Coordinate System 2000",
DATUM["China_2000",
SPHEROID["CGCS2000",6378137,298.257222101,
AUTHORITY["EPSG","1024"]],
AUTHORITY["EPSG","1043"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4490"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",114],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",38500000],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
AUTHORITY["EPSG","4526"]]`;
const crs = ['EPSG:4526', WKT_4526, [38344577.88, 2380651.49, 38655422.12, 5036050.38]];
html
<mb-map
:crs='crs'
...
>
...
</mb-map>
8. 底图请求如何设置token等header
在MbMap组件的 extendProps
属性性中设置 transformRequest
方法,参考代码:
9. 图层顺序
根据Vue解析组件顺序,处在MbMap下方的组件图层在Mapbox显示的顺序在上方。如下代码所示:
- 图层2在图层1上面
- 图层3在图层2上面
- 图层4在图层3上面
- 图层5在图层4上面
html
<mb-map>
<mb-url-template-layer id="1" /><!-- 1 -->
<mb-polygon-layer id="2" /><!-- 2 -->
<mb-symbol-layer id="3" /><!-- 3 -->
<mb-symbol-layer id="4" /><!-- 4 -->
<mb-buffer-circle-layer id="5" /><!-- 5 -->
</mb-map>
如需调整图层顺序,请使用MbMap组件实例上的reorderLayers
方法
10. WMTS底图Origin不是[-180, -90]
如果发布的WMTS图层原点不是默认值,例如arcgis发布的WMTS服务切片原点一般为Origin: X: -400.0 Y: 400.0,这种情况Mapbox处理不了此种图层。 有两种方法可以解决此问题:
- 通过arcgis自带的转换功能,把WMTS图层导出成WMS图层,导出的url格式一般为:
/luzhou/sclz/rest/services/TDT_BZB/MapServer/export?dpi=96&transparent=true&format=png8&layers=default&bbox={bbox-epsg-3857}&f=image&bboxSR=3857&imageSR=3857
- 用leaflet,leaflet可以完全自定义图层参数
11. 加载高德导航底图
参数
wprd0{1-4}
- scl=1&style=7 为矢量图(含路网和注记)
- scl=2&style=7 为矢量图(含路网但不含注记)
- scl=1&style=6 为影像底图(不含路网,不含注记)
- scl=2&style=6 为影像底图(不含路网、不含注记)
- scl=1&style=8 为影像路图(含路网,含注记)
- scl=2&style=8 为影像路网(含路网,不含注记)
html
<mb-url-template-layer
url="http://wprd04.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=2&style=6"
/>