HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: /var/www/javago-portal-updates/public/assets/js/getLatLng.js
// This sample uses the Places Autocomplete widget to:
// 1. Help the user select a place
// 2. Retrieve the address components associated with that place
// 3. Populate the form fields with those address components.
// This sample requires the Places library, Maps JavaScript API.
// Include the libraries=places parameter when you first load the API.
// For example: <script
// src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">
let autocomplete;
let address1Field;
let address2Field;
let postalField;
let latitudeField;
let longitudeField;

address1Field = document.querySelector("#address");
// address2Field = document.querySelector("#address2");
postalField = document.querySelector("#postcode");
latitudeField = document.querySelector("#latitude");
longitudeField = document.querySelector("#longitude");

// function initAutocomplete() {
window.initAutocomplete = () => {
    // Create the autocomplete object, restricting the search predictions to
    // addresses in the US and Canada.
    autocomplete = new google.maps.places.Autocomplete(address1Field);
    address1Field.focus();
    // When the user selects an address from the drop-down, populate the
    // address fields in the form.
    autocomplete.addListener("place_changed", fillInAddress);
}

// function fillInAddress() {
const fillInAddress = () => {
    // Get the place details from the autocomplete object.
    const place = autocomplete.getPlace();
    let address1 = "";
    let postcode = "";
    let location = place.geometry.location;
    latitudeField.value = location.lat();
    longitudeField.value = location.lng();
    // address1 = place.formatted_address;
    // console.log('place: ', place);
    // console.log(place.formatted_address);

    // Get each component of the address from the place details,
    // and then fill-in the corresponding field on the form.
    // place.address_components are google.maps.GeocoderAddressComponent objects
    // which are documented at http://goo.gle/3l5i5Mr
    for (const component of place.address_components) {
        // @ts-ignore remove once typings fixed
        const componentType = component.types[0];
        // console.log('component: ', component);
        // console.log('componentType: ', componentType);
        switch (componentType) {
            case "subpremise": {
                // address1 += component.short_name;
                address1 += component.long_name;
                break;
            }

            case "street_number": {
                if (address1 != '') {
                    address1 += ', ';
                }
                // address1 = `${component.long_name} ${address1}`;
                address1 += component.long_name;
                break;
            }

            case "premise": {
                // address1 += component.short_name;
                if (address1 != '') {
                    address1 += ', ';
                }
                address1 += component.long_name;
                break;
            }
            case "route": {
                // address1 += component.short_name;
                if (address1 != '') {
                    address1 += ', ';
                }
                // address1 += component.long_name;
                address1 += component.short_name;
                break;
            }

            case "postal_code": {
                postcode = `${component.long_name}${postcode}`;
                if (address1 != '') {
                    address1 += ' - ';
                }
                address1 += component.long_name;
                break;
            }

            case "postal_code_suffix": {
                postcode = `${postcode}-${component.long_name}`;
                break;
            }

            case "sublocality_level_1":
                if (address1 != '') {
                    address1 += ', ';
                }
                address1 += component.long_name;
                break;

            case "locality":
                // document.querySelector("#locality").value = component.long_name;
                if (address1 != '') {
                    address1 += ', ';
                }
                address1 += component.long_name;
                break;

            case "administrative_area_level_1": {
                // document.querySelector("#state").value = component.short_name;
                if (address1 != '') {
                    address1 += ', ';
                }
                address1 += component.long_name;
                break;
            }

            case "country":
                // document.querySelector("#country").value = component.long_name;
                if (address1 != '') {
                    address1 += ', ';
                }
                address1 += component.long_name;
                break;
        }
    }
    // console.log(address1);
    address1Field.value = address1;
    postalField.value = postcode;
    // After filling the form with address components from the Autocomplete
    // prediction, set cursor focus on the second address line to encourage
    // entry of subpremise information such as apartment, unit, or floor number.
    // address2Field.focus();
}

// window.initAutocomplete = initAutocomplete;