赣州市洪水风险预警系统三维版本
guoshilong
2023-02-27 4d8c6dd77427e8e581fda17b6b65ba86bfb7a815
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import BingMapsApi from './BingMapsApi.js';
import Check from './Check.js';
import defaultValue from './defaultValue.js';
import Rectangle from './Rectangle.js';
import Resource from './Resource.js';
 
    var url = 'https://dev.virtualearth.net/REST/v1/Locations';
 
    /**
     * Provides geocoding through Bing Maps.
     * @alias BingMapsGeocoderService
     * @constructor
     *
     * @param {Object} options Object with the following properties:
     * @param {String} [options.key] A key to use with the Bing Maps geocoding service
     */
    function BingMapsGeocoderService(options) {
        options = defaultValue(options, defaultValue.EMPTY_OBJECT);
 
        var key = options.key;
        this._key = BingMapsApi.getKey(key);
 
        this._resource = new Resource({
            url: url,
            queryParameters: {
                key: this._key
            }
        });
    }
 
    Object.defineProperties(BingMapsGeocoderService.prototype, {
        /**
         * The URL endpoint for the Bing geocoder service
         * @type {String}
         * @memberof BingMapsGeocoderService.prototype
         * @readonly
         */
        url : {
            get : function () {
                return url;
            }
        },
 
        /**
         * The key for the Bing geocoder service
         * @type {String}
         * @memberof BingMapsGeocoderService.prototype
         * @readonly
         */
        key : {
            get : function () {
                return this._key;
            }
        }
    });
 
    /**
     * @function
     *
     * @param {String} query The query to be sent to the geocoder service
     * @returns {Promise<GeocoderService~Result[]>}
     */
    BingMapsGeocoderService.prototype.geocode = function(query) {
        //>>includeStart('debug', pragmas.debug);
        Check.typeOf.string('query', query);
        //>>includeEnd('debug');
 
        var resource = this._resource.getDerivedResource({
            queryParameters: {
                query: query
            }
        });
 
        return resource.fetchJsonp('jsonp').then(function(result) {
            if (result.resourceSets.length === 0) {
                return [];
            }
 
            var results = result.resourceSets[0].resources;
 
            return results.map(function (resource) {
                var bbox = resource.bbox;
                var south = bbox[0];
                var west = bbox[1];
                var north = bbox[2];
                var east = bbox[3];
                return {
                    displayName: resource.name,
                    destination: Rectangle.fromDegrees(west, south, east, north)
                };
            });
        });
    };
export default BingMapsGeocoderService;