/* (c) 2015 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.wms.mapbox; import static org.geoserver.wms.mapbox.MapBoxTileBuilderFactory.MIME_TYPE; import java.awt.Rectangle; import java.io.IOException; import java.util.Map; import no.ecc.vectortile.VectorTileEncoder; import no.ecc.vectortile.VectorTileEncoderNoClip; import org.geoserver.wms.WMSMapContent; import org.geoserver.wms.map.RawMap; import org.geoserver.wms.vector.VectorTileBuilder; import org.geotools.geometry.jts.ReferencedEnvelope; import com.vividsolutions.jts.geom.Geometry; /** * * * @author Niels Charlier * */ public class MapBoxTileBuilder implements VectorTileBuilder { private VectorTileEncoder encoder; public MapBoxTileBuilder(Rectangle mapSize, ReferencedEnvelope mapArea) { final int extent = Math.max(mapSize.width, mapSize.height); final int polygonClipBuffer = extent / 32; final boolean autoScale = false; this.encoder = new VectorTileEncoderNoClip(extent, polygonClipBuffer, autoScale); } @Override public void addFeature(String layerName, String featureId, String geometryName, Geometry geometry, Map<String, Object> properties) { encoder.addFeature(layerName, properties, geometry); } @Override public RawMap build(WMSMapContent mapContent) throws IOException { byte[] contents = encoder.encode(); return new RawMap(mapContent, contents, MIME_TYPE); } }