com.mapbox.services.commons.geojson.MultiLineString Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mapbox-java-geojson Show documentation
Show all versions of mapbox-java-geojson Show documentation
Mapbox Java Services (GeoJSON support)
package com.mapbox.services.commons.geojson;
import com.google.gson.GsonBuilder;
import com.mapbox.services.commons.geojson.custom.PositionDeserializer;
import com.mapbox.services.commons.geojson.custom.PositionSerializer;
import com.mapbox.services.commons.models.Position;
import java.util.ArrayList;
import java.util.List;
/**
* A MultiLineString is a type of {@link Geometry}.
*
* @see Official GeoJSON MultiLineString Specifications
* @since 1.0.0
*/
public class MultiLineString implements Geometry>> {
private final String type = "MultiLineString";
private List> coordinates;
/**
* Private constructor.
*
* @param coordinates List of {@link Position} making up the MultiLineString.
* @since 1.0.0
*/
private MultiLineString(List> coordinates) {
this.coordinates = coordinates;
}
/**
* Should always be "MultiLineString".
*
* @return String "MultiLineString".
* @since 1.0.0
*/
@Override
public String getType() {
return type;
}
/**
* Get the list of {@link Position} making up the MultiLineString.
*
* @return List of {@link Position}.
* @since 1.0.0
*/
@Override
public List> getCoordinates() {
return coordinates;
}
@Override
public void setCoordinates(List> coordinates) {
this.coordinates = coordinates;
}
/**
* Creates a {@link MultiLineString} from a list of coordinates.
*
* @param coordinates List of {@link Position} coordinates.
* @return {@link MultiLineString}.
* @since 1.0.0
*/
public static MultiLineString fromCoordinates(List> coordinates) {
return new MultiLineString(coordinates);
}
public static MultiLineString fromCoordinates(double[][][] coordinates) {
List> converted = new ArrayList<>(coordinates.length);
for (int i = 0; i < coordinates.length; i++) {
List innerList = new ArrayList<>(coordinates[i].length);
for (int j = 0; j < coordinates[i].length; j++) {
innerList.add(Position.fromCoordinates(coordinates[i][j]));
}
converted.add(innerList);
}
return fromCoordinates(converted);
}
/**
* Create a GeoJSON MultiLineString object from JSON.
*
* @param json String of JSON making up a MultiLineString.
* @return {@link MultiLineString} GeoJSON object.
* @since 1.0.0
*/
public static MultiLineString fromJson(String json) {
GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(Position.class, new PositionDeserializer());
return gson.create().fromJson(json, MultiLineString.class);
}
/**
* Convert feature into JSON.
*
* @return String containing MultiLineString JSON.
* @since 1.0.0
*/
@Override
public String toJson() {
GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(Position.class, new PositionSerializer());
return gson.create().toJson(this);
}
}