/**
* BeNomad BeMap JavaScript API - ReverseGeocoder (v1.5)
*
* Promise-based wrapper around `POST service/geocoding/1.0/reverse`. Turns a
* coordinate into a structured `bemap.GeocodingResponse`.
*
* Wire shape mirrors the BeMap server contract (cross-checked against
* `bemap-flutter-api/lib/service/reverse_geocoding/provider/rev_geo_server.dart`).
*
* @since 1.5.0
* @public
* @constructor
* @extends {bemap.ServiceV2}
* @param {bemap.Context} context BeMap-JS-API Context. Mandatory.
* @param {Object} [options]
*/
bemap.ReverseGeocoder = function(context, options) {
bemap.ServiceV2.call(this, context, options);
};
bemap.inherits(bemap.ReverseGeocoder, bemap.ServiceV2);
/**
* Send a reverse-geocoding request.
*
* @public
* @param {bemap.ReverseGeocodingRequest} request
* @param {Object} [options]
* @param {String} [options.geoserver]
* @param {AbortSignal} [options.signal]
* @return {Promise<bemap.GeocodingResponse>}
*/
bemap.ReverseGeocoder.prototype.revGeo = function(request, options) {
if (!(request instanceof bemap.ReverseGeocodingRequest)) {
return Promise.reject(new bemap.Error({
code: bemap.Error.NETWORK,
message: 'ReverseGeocoder.revGeo requires a bemap.ReverseGeocodingRequest'
}));
}
var opts = options || {};
var body = request.toJson();
if (!body.geoserver) body.geoserver = opts.geoserver || this.ctx.getGeoserver();
return this._post('service/geocoding/1.0/reverse', body, opts)
.then(function(json) {
return bemap.parseGeocodingResponseV2(json);
});
};