Google map Integration using JavaScript API
The provided script is an example of map integration using the Google Maps JavaScript API
It creates an interactive map with the ability to:
- Display the user's location using geolocation.
 - Allow the user to drag and move the map.
 - Update the address and location fields based on the map's center or marker's position.
 - Provide a "Locate Me" button to center the map on the user's current location.
 
code:
<script src="https://maps.googleapis.com/maps/api/js?signed_in&key=AIzaSyAA2ukvrb1kWQZ2dttsNIMynLJqVCYYrhw"></script>
<script>
    var map;
    var marker;
    var geocoder;
    var locField;
    var latField;
    var lngField;
    var locateMeBtn = document.getElementById("locateMeBtn");
    var isMapMoving = false;
    var updateTimeout;
    function initMap() {
        locField = document.getElementById("loc");
        latField = document.getElementById("lat");
        lngField = document.getElementById("lng");
        locateMeBtn.addEventListener("click", locateMe);
        if ("geolocation" in navigator) {
            navigator.geolocation.getCurrentPosition(function (position) {
                var userLocation = {
                    lat: position.coords.latitude,
                    lng: position.coords.longitude
                };
                map = new google.maps.Map(document.getElementById('map'), {
                    zoom: 18,
                    center: userLocation
                });
                marker = new google.maps.Marker({
                    position: userLocation,
                    map: map,
                    title: 'Your Location',
                    animation: google.maps.Animation.DROP,
                    draggable: true
                });
                geocoder = new google.maps.Geocoder();
                geocoder.geocode({
                    'location': userLocation
                }, function (results, status) {
                    if (status === google.maps.GeocoderStatus.OK && results[0]) {
                        var formattedAddress = results[0].formatted_address;
                        locField.value = formattedAddress;
                        updateLocationFields(results[0].geometry.location);
                    } else {
                        locField.value = 'Geocoding failed: ' + status;
                        console.log("Geocoding failed: " + status);
                    }
                });
                google.maps.event.addListener(map, 'dragstart', function () {
                    isMapMoving = true;
                });
                google.maps.event.addListener(map, 'dragend', function () {
                    isMapMoving = false;
                    clearTimeout(updateTimeout);
                    updateTimeout = setTimeout(updateAddress, 200);
                });
                google.maps.event.addListener(marker, 'dragend', function () {
                    clearTimeout(updateTimeout);
                    updateTimeout = setTimeout(updateAddress, 200);
                });
                google.maps.event.addListener(map, 'drag', function () {
                    marker.setPosition(map.getCenter());
                });
            }, function (error) {
                console.error("Geolocation error: " + error.message);
                setDefaultLocation();
            });
        } else {
            setDefaultLocation();
        }
    }
    function updateAddress() {
        if (!isMapMoving && marker) {
            var markerPosition = marker.getPosition();
            var geocoder = new google.maps.Geocoder();
            geocoder.geocode({
                'location': markerPosition
            }, function (results, status) {
                if (status === google.maps.GeocoderStatus.OK && results[0]) {
                    var formattedAddress = results[0].formatted_address;
                    locField.value = formattedAddress;
                } else {
                    console.log("Geocoding failed: " + status);
                }
            });
        }
    }
    function locateMe() {
        if ("geolocation" in navigator) {
            navigator.geolocation.getCurrentPosition(function (position) {
                var userLocation = {
                    lat: position.coords.latitude,
                    lng: position.coords.longitude
                };
                map.setCenter(userLocation);
                marker.setPosition(userLocation);
                updateAddress();
            }, function (error) {
                console.error("Geolocation error: " + error.message);
                setDefaultLocation();
            });
        } else {
            alert("Geolocation is not supported in this browser.");
        }
    }
    function setDefaultLocation() {
        var defaultLocation = {
            name: 'Main branch',
            lat: 17.4386235,
            lng: 78.4387877,
            info: 'Move the map to adjust your location'
        };
        locField = document.getElementById("loc");
        map = new google.maps.Map(document.getElementById('map'), {
            zoom: 18,
            center: {
                lat: defaultLocation.lat,
                lng: defaultLocation.lng
            },
            draggable: true
        });
        marker = new google.maps.Marker({
            position: {
                lat: defaultLocation.lat,
                lng: defaultLocation.lng,
            },
            map: map,
            title: defaultLocation.name,
            animation: google.maps.Animation.DROP,
            draggable: true
        });
        google.maps.event.addListener(map, 'drag', function () {
            marker.setPosition(map.getCenter());
        });
        google.maps.event.addListener(map, 'dragend', function () {
            updateAddress();
        });
        google.maps.event.addListener(marker, 'dragend', function () {
            updateAddress();
        });
        updateLocationFields(new google.maps.LatLng(defaultLocation.lat, defaultLocation.lng));
    }
    function updateLocationFields(location) {
        latField.value = location.lat();
        lngField.value = location.lng();
        var geocoder = new google.maps.Geocoder();
        geocoder.geocode({
            'location': location
        }, function (results, status) {
            if (status === google.maps.GeocoderStatus.OK && results[0]) {
                var formattedAddress = results[0].formatted_address;
                locField.value = formattedAddress;
                var postalCode = extractPostalCode(results[0].address_components);
                document.getElementById("pincode").value = postalCode;
            } else {
                locField.value = 'Geocoding failed: ' + status;
                console.log("Geocoding failed: " + status);
            }
        });
    }
    (function () {
        initMap();
    })();
</script>