This repository has been archived by the owner on May 6, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 43
Custom Geocoder based on WFS
Alejandro Díaz Torres edited this page Mar 14, 2014
·
1 revision
In order to use this plugin you need to include this files in the build.cfg:
gxp/src/script/plugins/spatialselector/GeocoderSpatialSelectorMethod.js
gxp/src/script/plugins/spatialselector/SpatialSelector.js
widgets/form/spatialselector/GeocoderSpatialSelectorMethod.js
NOTE: In the default configuration this is already done.
This widget is based on geocoder spatial selectors to perform simple location searches by WFS.
The plugin layout shows two WFS combo searches:
- one for the street name
- one for the street number
You can configure it adding this plugin with this configuration:
{
"ptype": "gxp_spatial_selector_geocoder",
"outputTarget": "west",
"text": "Geocoder",
"layoutConfig":{
"xtype": "form",
"buttonAlign": "right",
"autoScroll":true,
"frame":true
},
"crossParameters":{
"name": {
"COD_STRADA":{
"number": "COD_STRADA"
}
}
},
"spatialSelectorsConfig":{
"name":{
"xtype": "gxp_spatial_geocoding_selector",
"showSelectionSummary": false,
"multipleSelection": false,
"searchComboOutputFormat": "json",
"wfsBaseURL": "http://geoserver.comune.genova.it/geoserver/wfs",
"geocoderTypeName": "CTC:V_ASTE_STRADALI_TOPONIMO_SUB",
"geocoderTypeRecordModel":[
{
"name":"id",
"mapping":"id"
},
{
"name":"name",
"mapping":"properties.NOMEVIA"
},
{
"name":"custom",
"mapping":"properties.COD_STRADA"
},
{
"name":"geometry",
"mapping":"geometry"
}
],
"geocoderTypeSortBy":null,
"geocoderTypeQueriableAttributes":[
"COD_STRADA", "NOMEVIA"
],
"spatialOutputCRS": "EPSG:3003",
"geocoderTypePageSize": 10,
"zoomToCurrentExtent": false
},
"number":{
"xtype": "gxp_spatial_geocoding_selector",
"showSelectionSummary": false,
"multipleSelection": false,
"searchComboOutputFormat": "json",
"wfsBaseURL": "http://geoserver.comune.genova.it/geoserver/wfs",
"geocoderTypeName": "SITGEO:CIVICI_COD_TOPON_SUB",
"geocoderTypeRecordModel":[
{
"name":"id",
"mapping":"id"
},
{
"name":"name",
"mapping":"properties.COD_STRADA"
},
{
"name":"custom",
"mapping":"properties.COD_TOPON"
},
{
"name":"geometry",
"mapping":"geometry"
}
],
"geocoderTypeSortBy":null,
"geocoderTypeQueriableAttributes":[
"COD_STRADA", "COD_TOPON"
],
"spatialOutputCRS": "EPSG:3003",
"geocoderTypePageSize": 10,
"zoomToCurrentExtent": false
}
}
}
You need to know the WFS feature model and include it on the geocoderTypeRecordModel
spatial selectors and the crossParameters
.
In this case we use two WFS combo, one for the street name:
...
"name":{
"xtype": "gxp_spatial_geocoding_selector",
"showSelectionSummary": false,
"multipleSelection": false,
"searchComboOutputFormat": "json",
"wfsBaseURL": "http://geoserver.comune.genova.it/geoserver/wfs",
"geocoderTypeName": "CTC:V_ASTE_STRADALI_TOPONIMO_SUB",
"geocoderTypeRecordModel":[
{
"name":"id",
"mapping":"id"
},
{
"name":"name",
"mapping":"properties.NOMEVIA"
},
{
"name":"custom",
"mapping":"properties.COD_STRADA"
},
{
"name":"geometry",
"mapping":"geometry"
}
],
"geocoderTypeSortBy":null,
"geocoderTypeQueriableAttributes":[
"COD_STRADA", "NOMEVIA"
],
"spatialOutputCRS": "EPSG:3003",
"geocoderTypePageSize": 10,
"zoomToCurrentExtent": false
}
...
And another one for the street number:
...
"number":{
"xtype": "gxp_spatial_geocoding_selector",
"showSelectionSummary": false,
"multipleSelection": false,
"searchComboOutputFormat": "json",
"wfsBaseURL": "http://geoserver.comune.genova.it/geoserver/wfs",
"geocoderTypeName": "SITGEO:CIVICI_COD_TOPON_SUB",
"geocoderTypeRecordModel":[
{
"name":"id",
"mapping":"id"
},
{
"name":"name",
"mapping":"properties.COD_STRADA"
},
{
"name":"custom",
"mapping":"properties.COD_TOPON"
},
{
"name":"geometry",
"mapping":"geometry"
}
],
"geocoderTypeSortBy":null,
"geocoderTypeQueriableAttributes":[
"COD_STRADA", "COD_TOPON"
],
"spatialOutputCRS": "EPSG:3003",
"geocoderTypePageSize": 10,
"zoomToCurrentExtent": false
}
...
And I link the first combo with the second one with the COD_STRADA
parameter.
...
"crossParameters":{
"name": {
"COD_STRADA":{
"number": "COD_STRADA"
}
}
}
...
You can see more options for each combo here.