API接口说明如下:
有序数对接口:
// 有序数对
public interface OrderedPair {
// x值
prop var x : Float64
// y值
prop var y : Float64
}
坐标类:
// 坐标
public open class Coordinate <: OrderedPair & ToString
// 坐标x值
public prop var x : Float64
// 坐标y值
public prop var y : Float64
// 通过x值和y值创建坐标对象
public init(x : Float64, y : Float64)
// 通过数组创建坐标对象
public static func fromArray(arr : Array<Float64>) : ?Coordinate
// 输出为字符串
public func toString() : String
}
经纬度坐标类:
// 经纬度坐标
public class LatLng <: Coordinate {
// 通过经纬度创建LatLng对象,其中lat为纬度,lng为经度
public init(lat : Float64, lng : Float64)
}
坐标工具:
// 坐标工具
public class CoordinateEngine {
// 计算3个坐标组成折线的角度
public static func angle(p1 : Coordinate, p2 : Coordinate, p3 : Coordinate) : Float64
// 计算两个坐标组成线段的方向
public static func bearing(pfrom : Coordinate , pto : Coordinate) : Float64
// 计算两个坐标的距离
public static func distance(c1 : Coordinate, c2 : Coordinate) : Float64
// 计算由坐标组成折线的长度
public static func length(coors : Array<Coordinate>) : Float64
// 计算面积(墨卡托Mercator投影) 传入的坐标需为地理坐标
public static func area(coors : Array<Coordinate>) : Float64
// 计算球面面积 传入的坐标需为地理坐标
public static func SphericalArea(coors : Array<Coordinate>) : Float64
// 计算平面面积(墨卡托Mercator投影) 传入的坐标需为地理坐标
public static func PlanarArea(coors : Array<Coordinate> ) : Float64
// 将GCJ-02坐标转换为WGS 1984坐标(近似)
public static func GCJ02ToWGS84(coordinate : Coordinate): Coordinate
// 将BD-09坐标转换为WGS 1984坐标(近似)
public static func BD09ToWGS84(coordinate : Coordinate): Coordinate
// 将WGS 1984坐标转换为GCJ-02坐标
public static func WGS84ToGCJ02(coordinate : Coordinate): Coordinate
// 将WGS 1984坐标转换为BD-09坐标
public static func WGS84ToBD09(coordinate : Coordinate): Coordinate
// 将BD-09坐标转换为GCJ-02坐标(近似)
public static func BD09ToGCJ02(coordinate : Coordinate): Coordinate
// 将GCJ-02坐标转换为BD-09坐标
public static func GCJ02ToBD09(coordinate : Coordinate): Coordinate
// 将墨卡托Mercator投影坐标转换为地理坐标
public static func MercatorToGeographic(coor : Coordinate) : Coordinate
// 将地理坐标投影到墨卡托Mercator投影坐标
public static func GeographicToMercator(coor : Coordinate) : Coordinate
}
坐标转换接口:
// 坐标转换接口,Geometry的子类均现实了CoordinateTransformer<T>接口
public interface CoordinateTransformer<T> where T <: Geometry{
// 将几何对象的地理坐标转换为GCJ-02坐标
mut func toGCJ02() : ?T
// 将几何对象的地理坐标转换为BD-09坐标
mut func toBD09() : ?T
// 将几何对象的地理坐标转换为WGS 1984坐标
mut func toWGS1984() : ?T
// 将地理坐标投影到墨卡托Mercator投影坐标
mut func projectToMercator() : ?T
}
几何图形抽象类:
// 几何图形抽象类
public open abstract class Geometry <: ToJson & ToString {
// 判断是否拥有空间参考
public func hasSpatialReference() : Bool
// 输出为JSON格式
public open func toJson(): JsonValue
// 通过JSON格式的几何图形转换为DataModel
public static func fromJson(jv: JsonValue): DataModel
}
几何对象工具类:
// 几何对象工具类
public class GeometryEngine {
// 计算Polygon的面积 传入的坐标需为地理坐标
public static func Area(p : Polygon) : Float64
// 计算Polygon的球面面积 传入的坐标需为地理坐标
public static func SphericalArea(p : Polygon) : Float64
// 计算Polygon的平面面积 传入的坐标需为地理坐标
public static func PlanarArea(p : Polygon) : Float64
}
几何点:
public class Point <: Geometry & Serializable<Point>{
// 点的坐标
public var coordinate : Coordinate
// 坐标x值
public prop var x : Float64
// 坐标y值
public prop var y : Float64
// 创建点
public init()
// 通过坐标创建点
public init(coordinate : Coordinate)
// 通过坐标和空间参考创建点
public init(coordinate : Coordinate, sr : SpatialReference)
// 通过x值和y值创建点
public init(x : Float64, y : Float64)
// 通过x值、y值和空间参考创建点
public init(x : Float64, y : Float64, sr : SpatialReference)
// 创建空点
public static func NullPoint() : Point
// 判断点是否为空点
public func isNull() : Bool
// 输出为字符串
public func toString()
// 通过JSON格式的点转换为DataModel
public static func fromJson(jv: JsonValue): DataModel
// 输出为JSON格式
public func toJson(): JsonValue
// 序列化
public func serialize(): DataModel
// 反序列化
static public func deserialize(dm: DataModel): Point
// 计算两个点的距离
public func distance(point : Point) : Float64
}
几何线:
public class Polyline <: Geometry & Serializable<Polyline>{
// 线的坐标数组
public var coordinates : ArrayList<Coordinate>
// 获取所有坐标值的x坐标数组
public prop let xs : ArrayList<Float64>
// 获取所有坐标值的y坐标数组
public prop let ys : ArrayList<Float64>
// 创建线
public init()
// 通过坐标数组创建线
public init(coordinates : ArrayList<Coordinate>)
// 通过坐标数组和空间参考创建线
public init(coordinates : ArrayList<Coordinate>, sr : SpatialReference)
// 通过坐标数组创建线
public static func fromArray(arr : ArrayList<Array<Float64>>) : ?Polyline
// 创建空线
public static func NullPolyline() : Polyline
// 判断点是否为空点
public func isNull() : Bool
// 输出为字符串
public func toString()
// 输出为JSON格式
public func toJson(): JsonValue
// 通过JSON格式的线转换为DataModel
public static func fromJson(jv: JsonValue): DataModel
// 序列化
public func serialize(): DataModel
// 反序列化
public static func deserialize(dm: DataModel): Polyline
// 计算线的长度
public func length() : Float64
}
几何面:
public class Polygon <: Geometry & Serializable<Polygon>{
// 面的坐标数组
public var coordinates : ArrayList<Coordinate>
// 获取所有坐标值的x坐标数组
public prop let xs : ArrayList<Float64>
// 获取所有坐标值的y坐标数组
public prop let ys : ArrayList<Float64>
// 创建面
public init()
// 通过坐标数组创建面
public init(coordinates : ArrayList<Coordinate>)
// 通过坐标数组和空间参考创建面
public init(coordinates : ArrayList<Coordinate>, sr : SpatialReference)
// 通过坐标数组创建面
public static func fromArray(arr : ArrayList<Array<Float64>>) : ?Polygon
// 创建空面
public static func NullPolygon() : Polygon
// 判断点是否为空点
public func isNull() : Bool
// 输出为字符串
public func toString()
// 输出为JSON格式
public func toJson(): JsonValue
// 通过JSON格式的面转换为DataModel
public static func fromJson(jv: JsonValue): DataModel
// 序列化
public func serialize(): DataModel
// 反序列化
public static func deserialize(dm: DataModel): Polygon
}