mapbox离线部署概述

主要过程

  1. 下载mapbox字体文件和图标文件

  2. 下载行政区划shapefile文件

  3. 到geoserver官网下载对应geoserver版本的输出扩展格式文件Vector Tiles,解压后将文件拷贝到geoserver\webapps\geoserver\WEB-INF\lib目录下
    找到Vector Tiles进行下载
    解压得到4个jar文件

  4. 用geoserver将shapefile文件发布成服务(相关文章很多,这里不详细写)

  5. 有时候存在geoserver跨域问题,主要解决方案

    (1)下载官方的cors压缩包,解压得到两个jar包,两个jar包文件放入geoserver目录下web容器的类库文件夹中(GeoServer 2.11.1\webapps\geoserver\WEB-INF\lib)
    在这里插入图片描述
    (2)打开geoserver目录(或者其他服务端项目)下web容器的中的xml配置文件(GeoServer 2.11.1\webapps\geoserver\WEB-INF\web.xml),增加一个过滤器

	<filter>
	    <filter-name>cros</filter-name>
	    <filter-class>com.mapsharp.server.SimpleCORSFilter</filter-class>
	</filter>
	<filter-mapping>
	    <filter-name>cros</filter-name>
	    <url-pattern>/*</url-pattern>
	</filter-mapping>

web.xml中添加相关代码
(3)将com文件夹放入classes中(添加过滤器代码和过滤器路由代码),com文件夹中包含一个SimpleCORSFilter.class文件
在这里插入图片描述

  1. 加载出离线地图
    在这里插入图片描述

核心代码

添加geoserver发布的底图服务图层

var mapStyle = {
            version: 8,
            sprite: "http://localhost:8085/sprite/sprite",
            glyphs: "http://localhost:8085/glyphs/fonts/{fontstack}/{range}.pbf",
            sources: {
              "osm-tiles": {
                type: "vector",
                scheme: "tms",
                tiles: [
                  "http://localhost:8082/geoserver/cite/wms?service=WMS"
                  "&version=1.1.0"
                  "&request=GetMap"
                  "&layers=cite:worldCountry3857"
                  "&styles=&bbox={bbox-epsg-3857}"
                  "&width=256&height=256"
                  "&srs=EPSG:3857"
                  "&format=application/x-protobuf;type=mapbox-vector"
                  "&TRANSPARENT=TRUE"
                ],
                tileSize: 512
              }
            },
            layers: [
            	// 背景颜色
              {
                id: "background",
                type: "background",
                paint: {
                  "background-color": 'black'
                },
                interactive: true
              },
               // 行政区划图层
              {
                id: "basemap",
                type: "fill",
                source: "osm-tiles",
                "source-layer": "worldCountry3857",
                paint: {
                  "fill-outline-color": "#666666", // 行政区划线颜色
                  "fill-color": "#3C3C3C", // 图层颜色
                  "fill-opacity": 0.8, // 透明度
                  "fill-antialias": true,
                  "fill-translate-anchor": 'viewport'
                },
              },
              // 地名标注图层
              {
                id: "basemapSymbol",
                type: "symbol",
                source: "osm-tiles",
                "source-layer": "worldCountry3857", // "osmtiles" "wordCountry"
                layout: {
                  "visibility": "visible",
                  "text-field": ["get", "NAME"],
                  "text-font": ['Open Sans Semibold,Arial Unicode MS Bold'], // 本地字体目录中要有此文件夹
                  "text-size": 12,
                  "symbol-avoid-edges": true, // 是否避免文本超出切片边界
                  "text-allow-overlap": false, // 是否允许文本重叠
                  "text-optional": false
                },
                paint: {
                  "text-color": "#AAAAAA", // 地名文本颜色
                },
                interactive: true
              },
            ]
    }

    var map = new mapboxgl.Map({
      container: 'map',
      style: mapStyle,
      zoom: 3,
      center: [112.08, 27.54]
    });
Mapbox是一个领先的地图平台,它提供了丰富的地图数据和定制化的地图服务。对于一些特殊情况,比如需要在没有网络连接的环境下使用地图,Mapbox也提供了离线部署的解决方案。 Mapbox离线部署的基本思路是将地图数据提前下载到本地设备上,然后通过相应的技术手段进行存储和调用,从而实现在没有网络连接的情况下依然可以使用地图和相关服务。离线部署可以提供更稳定和可靠的地图服务,尤其是在偏远地区或者容易断网的环境中。 要实现Mapbox离线部署,首先需要登陆Mapbox官网,根据需求选择合适的地图服务和数据。然后下载对应的地图数据,并将其存储到本地设备中。在代码中,需要使用Mapbox提供的SDK和API来调用本地存储的地图数据,从而实现离线地图的展示和功能。 除了基本的离线地图展示功能,Mapbox离线部署还可以支持定制化地图样式、添加标记和路线规划等高级功能。用户可以根据自己的需求和场景来定制离线地图服务,从而实现更个性化的地图展示和功能。 总的来说,Mapbox离线部署可以为用户在没有网络连接的情况下提供稳定可靠的地图服务,是一个非常实用和方便的解决方案。同时,随着技术的不断发展和Mapbox平台的进步,离线部署的功能和性能也将会不断提升,为用户带来更好的使用体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值