<dependency>
<groupId>no.ecc.vectortile</groupId>
<artifactId>java-vector-tile</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.mapfish.geo</groupId>
<artifactId>mapfish-geo-lib</artifactId>
<version>1.2.0</version>
</dependency>
创建基本的spring boot应用。
引入依赖包。
import no.ecc.vectortile.VectorTileEncoder;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Point;
主要方法:
public byte[] getTollJsonByTile(int x, int y, int z,
int gap) throws Exception {
//x,y,z 是瓦片号和等级,gap是扩圈的值
if(5>z||z>17){
return null;
}
//这里我用瓦片转成wkt,去库中框信息,利用空间索引
String wkt = MercatorProjection.getWktWithGap(x, y, z, gap);
VectorTileEncoder vector = new VectorTileEncoder(4096, 16, false);
//这里是mybatis的映射方法,得到数据
List<RT_GATE> listToll = tollMapping.getTollGeomtry(wkt);
for(RT_GATE rt:listToll){
Map<String,Object> attrs = new HashMap<>();
attrs.put("pid",rt.getPid());
attrs.put("in_link_pid",rt.getIn_link_pid());
attrs.put("out_link_pid",rt.getOut_link_pid());
attrs.put("node_pid",rt.getNode_pid());
attrs.put("type",rt.getType());
attrs.put("system_id",rt.getSystem_id());
Coordinate coordinate = new Coordinate(rt.getjGeometry().getPoint()[0],rt.getjGeometry().getPoint()[1]);
Point point = geometryFactory.createPoint(coordinate);
//转像素坐标,MercatorProjection是一个自定义的工具类
MercatorProjection.convert2Piexl(x,y,z,point);
vector.addFeature("toll",attrs,point);
}
return vector.encode();
}
Controller:
@Controller
public class WelcomeController {
@Autowired
Ora2Protobuf ora2Protobuf;
// @GET
// @Path("/base/tollcost/{z}/{x}/{y}")
// //@Produces("application/protobuf")
// public Response getTollgeom(@PathParam("z") int z, @PathParam("x") int x, @PathParam("y") int y, HttpServletResponse response) throws Exception {
//
//// return ora2Protobuf.getTollJsonByTile(x,y,z,0);
// return HttpResUtil.buildResponse(ora2Protobuf.getTollJsonByTile(x,y,z,0));
// }
@RequestMapping(value = "/base/tollcost/{z}/{x}/{y}")
public ResponseEntity getTollgeom(@PathVariable("z") int z, @PathVariable("x") int x, @PathVariable("y") int y) throws Exception {
return ResponseEntity.ok(ora2Protobuf.getTollJsonByTile(x,y,z,0));
// return ora2Protobuf.getTollJsonByTile(x,y,z,0);
//return HttpResUtil.buildResponse(ora2Protobuf.getTollJsonByTile(x,y,z,0));
}
请求:localhost:8080/base/tollcost/11/1685/777
返回二进制,前端可以用mapbox 的js包,获取toll图层进行适量瓦片的渲染了。
分享到:
相关推荐
MVT(Mapbox Vector Tile)是矢量瓦片的一种标准格式,由Mapbox公司提出,广泛应用于Web地图服务。Cesium,一个强大的开源JavaScript库,专门用于创建3D地球和地图应用,也支持加载和显示MVT格式的矢量瓦片。以下是...
5. **矢量瓦片服务**:如Mapbox Vector Tile或GeoJSON格式,用于将PostGIS中的矢量数据转化为适合Web服务的瓦片格式。 6. **TMS(Tile Map Service)和WMTS(Web Map Tile Service)**:这两种服务标准定义了如何...
Cesium也支持使用Mapbox Style语言来描述矢量瓦片的样式。 总的来说,Cesium之矢量瓦片展示涉及了数据处理、服务器端服务、客户端加载与渲染等多个环节。通过理解和掌握这些知识点,开发者可以创建出具有高度交互性...
基于postgis实现Mapbox标准的矢量瓦片切图,支持加载到4490 Mapbox(Maplibre)4490坐标系下。博文可参考:https://blog.csdn.net/xuyizhuo/article/details/142501751
【vtzero】是一个开源库,专门用于生成Mapbox标准的矢量瓦片。这个库的核心功能是解析和编码地理空间数据,将其转换为符合Mapbox Vector Tile (MVT)协议的格式。MVT是一种轻量级的数据交换格式,特别适合在Web和移动...
在Mapbox4490版中,开发者现在可以直接将CGCS2000坐标系的矢量数据或者栅格数据集导入到他们的应用中,展示中国的地理信息更为准确。 使用Mapbox4490版,需要注意的是,由于CGCS2000是一个地心坐标系统,而Mapbox...
Mapbox GL JS是一个强大的JavaScript库,它允许开发者创建交互式的、矢量渲染的地图。天地图是中国官方的地理信息服务,提供多种投影方式,其中CGCS2000是中国大地2000坐标系,适用于国内的地理信息展示。 首先,...
3. **矢量瓦片服务**:项目可能使用了如Mapbox Vector Tiles或GeoJSON等矢量瓦片格式,通过一个瓦片服务(如TileLayer)来加载和显示。开发者可能还自定义了渲染规则,以实现特定的地图样式。 4. **示例地图HTML和...
Mapbox底图下载器是一个工具,专为用户下载Mapbox平台上的矢量切片和样式文件而设计。Mapbox是一个流行的在线地图服务,提供自定义地图样式和丰富的地理数据功能。通过这个下载器,用户可以离线使用Mapbox地图,这...
Mapbox是一个流行的开源地图平台,它允许开发者自定义地图样式、添加交互功能并进行地理数据分析。而百度地图是中国市场上主流的地图服务提供商之一,拥有丰富的地理信息数据。在某些场景下,可能需要将百度地图的...
在地图应用开发中,Mapbox 是一款强大的工具,它提供了丰富的地图定制能力。然而,有时候我们可能需要将其他地图服务,比如百度地图的切片,集成到 Mapbox 中。本篇将详细介绍如何在 Mapbox 中通过自定义图层的方式...
##vector-tile-glib Vector-tile-glib 是一个 C 库,可用于使用...平铺到 png 这需要一个 mapbox 文件并使用 sample.mss 文件将其转换为 PNG 图像: $ ./tile-to-png -hUsage: lt-tile-to-png [OPTION...] - test re
Mapbox则是一个提供地图服务、矢量瓦片和地图设计工具的平台,它支持MVT(Map Vector Tiles)格式,这是一种高效的数据存储和传输方式,用于展示地理空间数据。本文将深入探讨如何使用Cesium加载Mapbox的MVT数据,...
2. 该平台支持矢量瓦片技术,矢量瓦片与传统的栅格瓦片相比,在缩放时能够保持清晰,不会出现像素化的情况,使得地图看起来更加流畅和细致。 3. 通过Mapbox Cookbook这本书,读者可以学习到如何操作和使用Mapbox的...
在Mapbox中使用自定义图层方式来加载百度切片,注意Mapbox的版本,因为老版本的Mapbox不能使用自定义图层。用到了coordtransform.js进行百度坐标、国标坐标、wgs84坐标的转换。 自己实现有什么问题就可以进行交流
Mapbox提出的矢量瓦片技术采用二进制格式传输数据,JSON文件存储样式,利用硬件加速实现快速制图。然而,这种技术存在一个问题:跨网格的要素被割裂,导致瓦片边界的符号不连续,影响地图美观和信息理解。 【现有...
从 Mapbox 瓦片生成打印地图的工具 简单的印刷定位地图是非常有效的讲故事工具,但制作它们可能需要很长时间。为什么?好吧,首先,您必须找到一个获得许可使用的参考资料,将其数字化并重新绘制信息,这对于 2 ...
- 将返回的Bitmap对象添加到TileOverlay,显示在地图上。 3. **缓存谷歌卫星瓦片**: - 为了提高用户体验,我们需要将加载过的瓦片缓存到本地,避免重复请求。可以创建一个文件夹用于存储瓦片图片,根据瓦片的...
在GeoServer处理矢量瓦片时,可能需要将数据转换为JSON进行处理或返回给客户端。 3. **java-vector-tile-1.3.4.jar**:这是Java对OpenMapTiles的Vector Tile规范的实现。OpenMapTiles是一种流行的矢量瓦片格式,...