[Commits] r2747 - sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets
commits at geoext.org
commits at geoext.org
Wed Jul 13 20:33:50 CEST 2011
Author: adube
Date: 2011-07-13 20:33:50 +0200 (Wed, 13 Jul 2011)
New Revision: 2747
Modified:
sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js
Log:
WFSTFeatureEditing - geometry type now automatically detected using GML2 property types, only first geometry property is used for the purpose of determining the handler to use for the DrawFeature control
Modified: sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js
===================================================================
--- sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js 2011-07-13 12:38:19 UTC (rev 2746)
+++ sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js 2011-07-13 18:33:50 UTC (rev 2747)
@@ -108,6 +108,43 @@
*/
DEFAULT_ACTION_GROUP: "wfstFeatureEditing",
+ /** private: property[GEOM_PROPERTIS]
+ * ``Object`` Hash OGC GML2 geometry property types used to detect which
+ * element of the WFS DescribeFeatureType requests is a geometry.
+ * Each entry has a hash of properties used to create the
+ * :class:`OpenLayers.Control.DrawFeature` control :
+ * - "handler": defines the handler to use for the draw control
+ * - "multiGeometry": the according constructor if it's multi
+ * geometry.
+ *
+ * Note : "GeometryPropertyType" set as "point" by default.
+ */
+ GEOM_PROPERTIES: {
+ "PointPropertyType": {
+ "handler": OpenLayers.Handler.Point
+ },
+ "LineStringPropertyType": {
+ "handler": OpenLayers.Handler.Path
+ },
+ "PolygonPropertyType": {
+ "handler": OpenLayers.Handler.Polygon
+ },
+ "MultiPointPropertyType": {
+ "handler": OpenLayers.Handler.Point,
+ "multiGeometry": OpenLayers.Geometry.MultiPoint
+ },
+ "MultiLineStringPropertyType": {
+ "handler": OpenLayers.Handler.Path,
+ "multiGeometry": OpenLayers.Geometry.MultiLineString
+ },
+ "MultiPolygonPropertyType": {
+ "handler": OpenLayers.Handler.Polygon,
+ "multiGeometry": OpenLayers.Geometry.MultiPolygon
+ },
+ "GeometryPropertyType": {
+ "handler": OpenLayers.Handler.Point
+ }
+ },
/* i18n */
@@ -198,11 +235,6 @@
*/
layerOptions: null,
- /** api: config[geomProperty]
- * ``String`` The name of the geometry property. Defaults to "the_geom".
- */
- geomProperty: "the_geom",
-
/** api: config[actionGroup]
* ``String`` "group" property value when creating new
* :class:`GeoExt.Action` objects. Defaults to
@@ -491,43 +523,22 @@
var describe = format.read(response.responseXML);
var fields = [];
+ var geomProperty;
if (describe && describe.featureTypes && describe.featureTypes[0]) {
Ext.each(describe.featureTypes[0].properties, function(property, index) {
fields.push({"name": property.name});
- if (property.name == this.manager.geomProperty) {
- var geomType;
- switch (property.localType) {
- case "PointPropertyType":
- this.layer.wfstFeatureEditing.drawHandler =
- OpenLayers.Handler.Point;
- break;
- case "LineStringPropertyType":
- this.layer.wfstFeatureEditing.drawHandler =
- OpenLayers.Handler.Path;
- break;
- case "PolygonPropertyType":
- this.layer.wfstFeatureEditing.drawHandler =
- OpenLayers.Handler.Polygon;
- break;
- case "MultiPointPropertyType":
- this.layer.wfstFeatureEditing.drawHandler =
- OpenLayers.Handler.Point;
+ // the first geometry property detected is used to set the
+ // handler and multi geometry constructor (if geometry is multi)
+ // used for the DrawFeature control
+ geomProperty = this.manager.GEOM_PROPERTIES[property.localType];
+ if (geomProperty &&
+ !this.layer.wfstFeatureEditing.drawHandler) {
+ this.layer.wfstFeatureEditing.drawHandler =
+ geomProperty.handler;
+ if (geomProperty.multiGeometry) {
this.layer.wfstFeatureEditing.multiGeometry =
- OpenLayers.Geometry.MultiPoint;
- break;
- case "MultiLineStringPropertyType":
- this.layer.wfstFeatureEditing.drawHandler =
- OpenLayers.Handler.Path;
- this.layer.wfstFeatureEditing.multiGeometry =
- OpenLayers.Geometry.MultiLineString;
- break;
- case "MultiPolygonPropertyType":
- this.layer.wfstFeatureEditing.drawHandler =
- OpenLayers.Handler.Polygon;
- this.layer.wfstFeatureEditing.multiGeometry =
- OpenLayers.Geometry.MultiPolygon;
- break;
+ geomProperty.multiGeometry;
}
}
}, this);
More information about the Commits
mailing list