PageSourceSearch

https://www.bookcitymilano.it/themes/bookcity/assets/js/search.js

js bookcitymilano.it collected 2026-10-02 04:18:34 UTC 4,776 bytes, 109 lines download raw bytes

1var Search = function () {
2    var address = {};
3
4    function sendRequest(address) {
5        return new Promise(function (resolve, reject) {
6            var service = new google.maps.places.AutocompleteService();
7            var request = {
8                input: address,
9                types: ['address'],
10                componentRestrictions: {country: ['IT']},
11                fields: ['name', 'address_components', 'geometry'],
12            };
13            service.getPlacePredictions(request, function (predictions, status) {
14                if (status !== google.maps.places.PlacesServiceStatus.OK || !predictions) {
15                    reject("Indirizzo non trovato!");
16                } else {
17                    let map = new google.maps.Map(document.createElement('div'));
18                    let service = new google.maps.places.PlacesService(map);
19                    service.getDetails({
20                        placeId: predictions[0].place_id, // Prendo la prima prediction
21                        fields: ['name', 'address_components', 'geometry']
22                    }, function (place, status) {
23                        if (status === google.maps.places.PlacesServiceStatus.OK) {
24                            address = formatAddress(formatPlace(place));
25                            resolve(address);
26                        } else {
27                            reject("Indirizzo non trovato!");
28                        }
29                    });
30                }
31            });
32        });
33    }
34
35    function formatPlace(place) {
36        var res = {};
37        res['ricerca'] = place.name;
38        place.address_components.forEach(function (element) {
39            if (element.types.includes('route')) {
40                res['indirizzo'] = element.long_name;
41            } else if (element.types.includes('street_number')) {
42                res['civico'] = element.long_name;
43            } else if (element.types.includes('locality')) {
44                res['localita'] = element.long_name;
45            } else if (element.types.includes('administrative_area_level_3')) {
46                res['citta'] = element.long_name;
47            } else if (element.types.includes('administrative_area_level_2')) {
48                res['provincia'] = element.long_name;
49                res['provincia_sigla'] = element.short_name;
50            } else if (element.types.includes('administrative_area_level_1')) {
51                res['regione'] = element.long_name;
52            } else if (element.types.includes('country')) {
53                res['nazione'] = element.long_name;
54                res['nazione_sigla'] = element.short_name;
55            } else if (element.types.includes('postal_code')) {
56                res['cap'] = element.long_name;
57            }
58        });
59        res['latitudine'] = place.geometry.location.lat();
60        res['longitudine'] = place.geometry.location.lng();
61        return res;
62    }
63
64    function formatAddress(address) {
65        var res = address;
66        res['get_indirizzo_formattato'] = function () {
67            var indirizzo_formattato = this.indirizzo;
68            indirizzo_formattato += (this.civico) ? ', ' + this.civico : '';
69            indirizzo_formattato += (this.cap) ? ', ' + this.cap : '';
70            indirizzo_formattato += (this.localita) ? ' ' + this.localita : '';
71            indirizzo_formattato += (this.citta) && (this.citta !== this.localita) ? ' ' + this.citta : '';
72            indirizzo_formattato += (this.provincia_sigla) ? ' ' + this.provincia_sigla : '';
73            indirizzo_formattato += (this.nazione) ? ', Italy' : '';
74            return indirizzo_formattato;
75        }
76        return res;
77    }
78
79    function initSearchAddress(selector, callback_success, callback_error_message) {
80        let autocomplete = new google.maps.places.Autocomplete(
81            $(selector)[0],
82            {
83                types: ['address'],
84                componentRestrictions: {country: ['IT']},
85                fields: ['name', 'address_components', 'geometry']
86            }
87        );
88        google.maps.event.addListener(autocomplete, 'place_changed', function () {
89            var place = autocomplete.getPlace();
90            if (!place.address_components) {
91                sendRequest(place.name)
92                    .then(function (dati) {
93                        callback_success(dati);
94                    })
95                    .catch(function (err) {
96                        $(selector).val('');
97                        callback_error_message(err);
98                    });
99            } else {
100                address = formatAddress(formatPlace(place));
101                callback_success(address);
102            }
103        });
104    }
105
106    return {
107        initSearchAddress: initSearchAddress,
108    }
109}();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.