@Override public Geoshape convert(Object value) { if(value instanceof Map) { return convertGeoJson(value); value = convertCollection((Collection<Object>) value); throw new IllegalArgumentException("Could not parse coordinates from string: " + value, e); return convert(coordinates); } else return null;
private Geoshape convertGeoJson(Object value) { //Note that geoJson is long,lat try { Map<String, Object> map = (Map) value; String type = (String) map.get("type"); if("Feature".equals(type)) { Map<String, Object> geometry = (Map) map.get("geometry"); return convertGeometry(geometry); } else { return convertGeometry(map); } } catch (ClassCastException | IOException | ParseException e) { throw new IllegalArgumentException("GeoJSON was unparsable"); } }
registerClassInternal(16,Date.class, new DateSerializer()); registerClassInternal(17,Geoshape.class, new Geoshape.GeoshapeSerializer()); registerClassInternal(18,String.class, new StringSerializer()); //supports null serialization registerClassInternal(19,Float.class, new FloatSerializer());
double[] parsedCoordinates = convertCollection(coordinates); return point(parsedCoordinates[1], parsedCoordinates[0]); throw new IllegalArgumentException("GeoJSON circles require a radius"); double[] parsedCoordinates = convertCollection(coordinates); return circle(parsedCoordinates[1], parsedCoordinates[0], radius.doubleValue()); double[] p0 = convertCollection((Collection) coordinates.get(0)); double[] p1 = convertCollection((Collection) coordinates.get(1)); double[] p2 = convertCollection((Collection) coordinates.get(2)); double[] p3 = convertCollection((Collection) coordinates.get(3)); return box(min(p0[1], p1[1], p2[1], p3[1]), min(p0[0], p1[0], p2[0], p3[0]), max(p0[1], p1[1], p2[1], p3[1]), max(p0[0], p1[0], p2[0], p3[0]));