<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图层进行适量瓦片的渲染了。
分享到:
相关推荐
详细说明:https://blog.csdn.net/caozl1132/article/details/88106984
通过对mapbox GL JS进行改造,使其能够加载天地图CGCS2000瓦片地图服务。
地图矢量瓦片数据生成库,支持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 瓦片生成打印地图的工具 简单的印刷定位地图是非常有效的讲故事工具,但制作它们可能需要很长时间。为什么?好吧,首先,您必须找到一个获得许可使用的参考资料,将其数字化并重新绘制信息,这对于 2 ...
在Mapbox中使用自定义图层实现百度地图切片纠偏后的展示,注意在这个中mapbox的版本尽量使用最新的,因为老版本自定义图层函数不一样
cesium加载mapbox解析mvt
Unity在线加载MapBox地图教程,很好的学习资料呢~~~~~
矢量瓷砖生产商 这是一个创建矢量切片的实验项目。 这有什么作用? 这会根据 mapnik proto 在选定的缩放级别为给定区域创建矢量切片。 生成的几何图形在图块的边界处被裁剪。 依赖: 地图尼克 mapnik-vector-tile ...
下载mapbox矢量切片,包括样式文件,生成一个index.html测试页面,测试浏览下载的地图
Android的关于高德地图加载谷歌瓦片,并缓存本地的功能. 以及加载多个Marker的title都显示在地图的Demo. Android studio 3.0
一个用于将高分辨率版本的mapbox-gl保存到pdf的库,该pdf具有可选的页眉和/或页脚,可根据格式的大小进行缩放。 安装 npm install mapbox-print-pdf --save 用法示例 在纵向模式下以A3格式打印地图的示例用法: var...
关键技术:基于[Angular](https:// angular.io/)的单页应用程序,具有Mapbox GL,适用于OAuth2的AWS Cognito,用于持久性的S3和PostgreSQL DB以及用编写的Spring Boot后端,均已预配置到AWS Infrastructure拥有...
mapbox-vector-tiles 使用mapbox-gl渲染mapbox矢量图块格式
mapbox 本地部署的字体文件glyphs Arial Unicode MS Regular 等多个
Mapbox 加载百度地图(叠加切片图层),用到了coordtransform.js进行百度坐标、国标坐标、wgs84坐标的转换
国外一本学习mapbox书籍,英文版,想学习的可以看一下,内容比较全面,英语不好的可使用多看阅读器,不懂的词汇能翻译
store-mvt 从 Node.js 中切片和存储模块。 安装 来自 npm : npm install [--save[-dev]] store-mvt 来自 github: ...// to use it const {storeMvt} = require('path/to/target/dir/src/index.js');...
Antv L7 + mapbox 实现简单地图场景