package org.fieldpapers.model; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import com.mapbox.mapboxsdk.overlay.PathOverlay; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.Geometry; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class FPPage { private JSONObject feature; private Geometry geom; private Envelope env; private PathOverlay pathOverlay; private String pageNumber; private String url; public FPPage(JSONObject feature) { this.feature = feature; parsePageNumberAndUrl(); buildGeometryAndPathOverlay(); buildEnvelope(); } private void parsePageNumberAndUrl() { try { pageNumber = feature.getJSONObject("properties").getString("page_number"); url = feature.getJSONObject("properties").getString("url"); } catch (JSONException e) { e.printStackTrace(); } } private void buildGeometryAndPathOverlay() { try { pathOverlay = new PathOverlay(); Paint paint = pathOverlay.getPaint(); paint.setColor(Color.BLACK); paint.setStrokeWidth(4.0f); JSONArray coords = feature.getJSONObject("geometry").getJSONArray("coordinates").getJSONArray(0); int len = coords.length(); Coordinate[] coordinates = new Coordinate[len]; for (int i = 0; i < len; ++i) { JSONArray coord = coords.getJSONArray(i); double lng = coord.getDouble(0); double lat = coord.getDouble(1); coordinates[i] = new Coordinate(lng, lat); pathOverlay.addPoint(lat, lng); } geom = FPAtlas.GEOMETRY_FACTORY.createPolygon(coordinates); } catch (JSONException e) { e.printStackTrace(); } } private void buildEnvelope() { env = geom.getEnvelopeInternal(); } /** * GETTERS */ public String pageNumber() { return pageNumber; } public String url() { return url; } public Geometry geometry() { return geom; } public Envelope envelope() { return env; } public PathOverlay pathOverlay() { return pathOverlay; } }