Exemplo n.º 1
0
Handle<Value> Geometry::New(OGRGeometry *geom, bool owned)
{
	HandleScope scope;

	if (!geom) {
		return Null();
	}

	switch(getGeometryType_fixed(geom)) {
	case wkbPoint              :
		return scope.Close(Point::New(static_cast<OGRPoint*>(geom), owned));
	case wkbLineString         :
		return scope.Close(LineString::New(static_cast<OGRLineString*>(geom), owned));
	case wkbLinearRing         :
		return scope.Close(LinearRing::New(static_cast<OGRLinearRing*>(geom), owned));
	case wkbPolygon            :
		return scope.Close(Polygon::New(static_cast<OGRPolygon*>(geom), owned));
	case wkbGeometryCollection :
		return scope.Close(GeometryCollection::New(static_cast<OGRGeometryCollection*>(geom), owned));
	case wkbMultiPoint         :
		return scope.Close(MultiPoint::New(static_cast<OGRMultiPoint*>(geom), owned));
	case wkbMultiLineString    :
		return scope.Close(MultiLineString::New(static_cast<OGRMultiLineString*>(geom), owned));
	case wkbMultiPolygon       :
		return scope.Close(MultiPolygon::New(static_cast<OGRMultiPolygon*>(geom), owned));
	default                    :
		return NODE_THROW("Tried to create unsupported geometry type");
	}
}
Exemplo n.º 2
0
Local<Value> Geometry::New(OGRGeometry *geom, bool owned)
{
    Nan::EscapableHandleScope scope;

    if (!geom) {
        return scope.Escape(Nan::Null());
    }

    OGRwkbGeometryType type = getGeometryType_fixed(geom);
    type = wkbFlatten(type);

    switch (type) {
    case wkbPoint:
        return scope.Escape(Point::New(static_cast<OGRPoint*>(geom), owned));
    case wkbLineString:
        return scope.Escape(LineString::New(static_cast<OGRLineString*>(geom), owned));
    case wkbLinearRing:
        return scope.Escape(LinearRing::New(static_cast<OGRLinearRing*>(geom), owned));
    case wkbPolygon:
        return scope.Escape(Polygon::New(static_cast<OGRPolygon*>(geom), owned));
    case wkbGeometryCollection:
        return scope.Escape(GeometryCollection::New(static_cast<OGRGeometryCollection*>(geom), owned));
    case wkbMultiPoint:
        return scope.Escape(MultiPoint::New(static_cast<OGRMultiPoint*>(geom), owned));
    case wkbMultiLineString:
        return scope.Escape(MultiLineString::New(static_cast<OGRMultiLineString*>(geom), owned));
    case wkbMultiPolygon:
        return scope.Escape(MultiPolygon::New(static_cast<OGRMultiPolygon*>(geom), owned));
    default:
        Nan::ThrowError("Tried to create unsupported geometry type");
        return scope.Escape(Nan::Undefined());
    }
}