public void loadData(Envelope envelope, int zoom) { long timeStart = System.currentTimeMillis(); // TODO: use fromInternal(Envelope) here MapPos minPos = projection.fromInternal(envelope.getMinX(), envelope.getMinY()); MapPos maxPos = projection.fromInternal(envelope.getMaxX(), envelope.getMaxY()); String sqlBbox = "" + minPos.x + "," + minPos.y + "," + maxPos.x + "," + maxPos.y; // load geometries List<Geometry> newVisibleElementsList = new LinkedList<Geometry>(); try { Uri.Builder uri = Uri.parse("http://kaart.maakaart.ee/poiexport/roads.php?output=gpoly&").buildUpon(); uri.appendQueryParameter("bbox", sqlBbox); uri.appendQueryParameter("max", String.valueOf(maxObjects)); Log.debug("Vector API url:" + uri.build().toString()); JSONObject jsonData = NetUtils.getJSONFromUrl(uri.build().toString()); if (jsonData == null) { Log.debug("No CartoDB data"); return; } JSONArray rows = jsonData.getJSONArray("res"); for (int i = 0; i < rows.length(); i++) { JSONObject row = rows.getJSONObject(i); String the_geom_encoded = row.getString("g"); String name = row.getString("n"); String type = row.getString("t"); Vector<MapPos> mapPos = GeoUtils.decompress(the_geom_encoded, 5, projection); Geometry newObject = new Line(mapPos, new DefaultLabel(name, type), lineStyleSet, null); newObject.attachToLayer(this); newObject.setActiveStyle(zoom); newVisibleElementsList.add(newObject); } } catch (ParseException e) { Log.error("Error parsing data " + e.toString()); } catch (JSONException e) { Log.error("Error parsing JSON data " + e.toString()); } long timeEnd = System.currentTimeMillis(); Log.debug( "OnlineVector loaded N:" + newVisibleElementsList.size() + " time ms:" + (timeEnd - timeStart)); setVisibleElements(newVisibleElementsList); }
public void createElementsInLayer( int zoom, Vector<Geometry> objectTemp, Vector<Geometry> objects, GeometryData.Type dataType) { // apply styles, create new objects for these for (Geometry object : objectTemp) { Geometry newObject = null; String[] userData = (String[]) object.userData; GeometryStyle style = getGeometryStyle(object, userData[0]); GeometryData geomData = new GeometryData(userData[0], dataType, userData[1], style, layerId); if (hideGeometryList.contains(geomData.id)) continue; if (object instanceof Point) { newObject = new Point(((Point) object).getMapPos(), null, style.toPointStyleSet(), geomData); } else if (object instanceof Line) { newObject = new Line(((Line) object).getVertexList(), null, style.toLineStyleSet(), geomData); } else if (object instanceof Polygon) { newObject = new Polygon( ((Polygon) object).getVertexList(), ((Polygon) object).getHolePolygonList(), null, style.toPolygonStyleSet(), geomData); } Geometry transformedObject = GeometryUtil.convertGeometryFromWgs84(newObject); transformedObject.attachToLayer(this); transformedObject.setActiveStyle(zoom); objects.add(transformedObject); } }