konova/templates/map/client/libs/netgis/SearchPlace.js
mpeltriaux a8b7cebc09 Netgis client update
* adds new version to sources
2022-09-12 13:12:59 +02:00

59 lines
1.8 KiB
JavaScript

"use strict";
var netgis = netgis || {};
netgis.SearchPlace = function()
{
this.client = null;
this.timeout = null;
this.lastRequest = null;
};
netgis.SearchPlace.prototype.load = function()
{
this.client.on( netgis.Events.SEARCH_PLACE_REQUEST, this.onSearchPlaceRequest.bind( this ) );
};
netgis.SearchPlace.prototype.request = function( query )
{
//NOTE: https://www.geoportal.rlp.de/mapbender/geoportal/gaz_geom_mobile.php?outputFormat=json&resultTarget=web&searchEPSG=25832&maxResults=5&maxRows=5&searchText=trier&featureClass=P&style=full&name_startsWith=trier
//TODO: get url with query template from config
////var url = "https://www.geoportal.rlp.de/mapbender/geoportal/gaz_geom_mobile.php?outputFormat=json&resultTarget=web&searchEPSG={epsg}&maxResults=5&maxRows=5&featureClass=P&style=full&searchText={q}&name_startsWith={q}";
////url = "./proxy.php?" + url;
if ( this.client.config.search && this.client.config.search.url )
{
var url = this.client.config.search.url;
var q = query;
q = q.trim();
url = netgis.util.replace( url, "{q}", window.encodeURIComponent( q ) );
url = netgis.util.replace( url, "{epsg}", 4326 ); // 25823
url = window.encodeURI( url );
this.lastRequest = netgis.util.request( url, this.onSearchPlaceResponse.bind( this ) );
}
else
{
console.warn( "No search API url configured for place search!" );
}
};
netgis.SearchPlace.prototype.onSearchPlaceRequest = function( e )
{
var query = e.query;
var self = this;
// Debounce Request
if ( this.lastRequest ) this.lastRequest.abort();
if ( this.timeout ) window.clearTimeout( this.timeout );
this.timeout = window.setTimeout( function() { self.request( query ); }, 300 );
};
netgis.SearchPlace.prototype.onSearchPlaceResponse = function( data )
{
var json = JSON.parse( data );
this.client.invoke( netgis.Events.SEARCH_PLACE_RESPONSE, json );
};