PageSourceSearch

https://www.esic.edu/themes/esic/js/google-maps-code.js?tlv0u9

js esic.edu collected 2026-09-24 08:35:59 UTC 2,918 bytes, 91 lines download raw bytes

1var autocomplete;
2function initAutocomplete(){
3  autocomplete = new google.maps.places.Autocomplete(
4    document.getElementById('direccion_maps'),
5    {
6      types: ['address'],
7      fields: ['place_id', 'name', 'address_components']
8    });
9
10  autocomplete.addListener('place_changed', onPlaceChanged);
11}
12
13function onPlaceChanged(){
14  const place = autocomplete.getPlace();
15  let aInfoAdress = new Object();
16  let postcode = "";
17
18  if(!place.place_id){
19    if(document.getElementById('place_details')){
20      document.getElementById('place_details').value = '';
21    }
22  }else{
23    // Get each component of the address from the place details,
24    // and then fill-in the corresponding field on the form.
25    // place.address_components are google.maps.GeocoderAddressComponent objects
26    // which are documented at http://goo.gle/3l5i5Mr
27    for (const component of place.address_components) {
28      // @ts-ignore remove once typings fixed
29      const componentType = component.types[0];
30
31      switch (componentType) {
32        case "route": {
33          aInfoAdress.direccion = component.short_name;
34          break;
35        }
36
37        case "street_number": {
38          aInfoAdress.numero_calle = `${component.long_name}`;
39          break;
40        }
41
42        case "postal_code": {
43          postcode = `${component.long_name}${postcode}`;
44          aInfoAdress.codigo_postal = postcode;
45          break;
46        }
47
48        case "postal_code_suffix": {
49          postcode = `${postcode}-${component.long_name}`;
50          aInfoAdress.codigo_postal = postcode;
51          break;
52        }
53        case "locality":
54          aInfoAdress.ciudad = component.long_name;
55          break;
56
57        case "administrative_area_level_1": {
58          aInfoAdress.provincia = component.long_name;
59          break;
60        }
61        case "country":
62          aInfoAdress.pais_code = component.short_name;
63          aInfoAdress.pais = component.long_name;
64          break;
65      }
66    }
67
68    if(document.getElementById('place_details')){
69      var input_details = document.getElementById('place_details');
70      input_details.value = base64EncodeUnicode(JSON.stringify(aInfoAdress));
71    }else{
72      let elementoPadre = document.getElementById('direccion_maps').parentElement;
73      const place_details = document.createElement("input");
74      place_details.setAttribute("type", "hidden");
75      place_details.setAttribute("id", "place_details");
76      place_details.setAttribute("name", "place_details");
77      place_details.setAttribute("value", base64EncodeUnicode(JSON.stringify(aInfoAdress)));
78      elementoPadre.appendChild(place_details);
79    }
80  }
81}
82
83function base64EncodeUnicode(str) {
84  // Primero, codifica la cadena a UTF-8
85  const utf8Bytes = encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
86    (_, p1) => String.fromCharCode('0x' + p1)
87  );
88
89  // Luego, aplica btoa a la cadena UTF-8
90  return btoa(utf8Bytes);
91}

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.