/*
* Copyright (c) 2013 Bundesamt by Kartographie und Geodäsie.
* See license.txt in the BKG WebMap distribution or repository for the
* full text of the license.
*
* Author: Dirk Thalheim
*/
/**
* @requires OpenLayers/BaseTypes/Class.js
* @requires OpenLayers/Format/GeoJSON.js
* @requires OpenLayers/Request.js
* @requires OpenLayers/Protocol.js
* @requires OpenLayers/Protocol/WFS/v1_1_0.js
* @requires BKGWebMap/Util.js
* @requires BKGWebMap/Protocol.js
*/
/**
* @classdesc Basisklasse für Interaktion des Geocoders mit einem WFS.<br/>
* Es wird soweit nur geocode angeboten.
*
* @constructor BKGWebMap.Protocol.WFSSearch
* @param {object} options - Optionen für Protokoll (s. OpenLayers.Protocol.WFS.v1_1_0)
* @param {string} options.url - URL des Suchdienstes
* @param {string} options.srsName - Georeferenzierung für Suchergebnisse
*/
BKGWebMap.Protocol.WFSSearch = OpenLayers.Class(OpenLayers.Protocol.WFS.v1_1_0, {
/**
* Autocomplete wird vorerst nicht unterstützt.
* @memberOf BKGWebMap.Protocol.WFSSearch
* @type boolean
*/
canAutocomplete: false,
wildcardSuffix: "*",
initialize: function (options) {
OpenLayers.Protocol.WFS.v1_1_0.prototype.initialize.apply(this, [options]);
},
destroy: function() {
OpenLayers.Protocol.WFS.v1_1_0.prototype.destroy.apply(this, arguments);
},
/**
* Leert den Suggest-Cache
* @memberOf BKGWebMap.Protocol.WFSSearch
*/
clearCache: function() { },
/**
* Führt die Ortssuche aus.
* @memberOf BKGWebMap.Protocol.WFSSearch
* @param {string} term - Suchterm
* @param {object} options - Response-Handling-Optionen
* @param {function} options.callback
* @param {object} options.scope
* @return {BKGWebMap.Protocol.Response}
*/
geocode: function( term, options ) {
options.filter = new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.LIKE,
property: this.searchProperty,
value: term + this.wildcardSuffix
});
var response = this.read(options);
response.requestType = 'geocode';
return response;
},
/**
* Wertet die Antowrt einer Geocode-Anfrage aus.
* @memberOf BKGWebMap.Protocol.WFSSearch
* @param {XMLHttpRequest} request
* @param {BKGWebMap.Protocol.Response} response
*/
parseResponse: function(request, readOptions) {
var features = OpenLayers.Protocol.WFS.v1_1_0.prototype.parseResponse.apply(this, arguments);
this.updateDataModel(features);
return features;
},
/**
* Aktualisiert das Datenmodell. Hierbei wird sichergestellt, dass das bbox-Attribut eine Geometrie wird.
*
* @memberOf BKGWebMap.Protocol.WFSSearch
* @param {Array<OpenLayers.Feature.Vector>} features - Die FeatureCollection
*/
updateDataModel: function(features) {
// Überschreiben, um Datenmodell zu transformieren
},
/**
* Bricht einen laufenden Request ab. Das Response-Objekt muss von diesem Protokoll stammen.
* @memberOf BKGWebMap.Protocol.WFSSearch
* @param {BKGWebMap.Protocol.Response} response - Das Protokoll-Response-Objekt
*/
abort: function(response) {
if (response && response.request) {
response.request.abort();
}
},
CLASS_NAME: "BKGWebMap.Protocol.WFSSearch"
});