This repository was 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.jsgxp/src/script/plugins/spatialselector/SpatialSelector.jswidgets/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.