ndhaniff
10/31/2017 - 1:06 PM

add route function

jQuery(function($) {
var directionsService = new google.maps.DirectionsService();
var geocoder = new google.maps.Geocoder();

    function degreesToRadians(degrees) {
        return degrees * Math.PI / 180;
    }


    navigator.geolocation.getCurrentPosition(function(position) {
        var posit1 = {
            lat: position.coords.latitude,
            lng: position.coords.longitude
        };

        var posit2 = {
            lat: parseFloat($('#droplat').val()),
            lng: parseFloat($('#droplng').val())
        };

        var LatlngRest = new google.maps.LatLng(posit2.lat, posit2.lng);

                //get directionsService
                directionsDisplay = new google.maps.DirectionsRenderer();

                var mapOption = {
                    zoom: 14,
                    center: LatlngRest,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };

                // Attach a map to the DOM Element, with the defined settings
                var singlemap = new google.maps.Map(document.getElementById("restaurant-map"), mapOption);
                directionsDisplay.setMap(singlemap);

                //calculate route
                function calcRoute() {
                var start = posit1;
                var end = posit2;
                var request = {
                  origin: start,
                  destination: end,
                  travelMode: 'DRIVING'
                };
                directionsService.route(request, function(result, status) {
                  if (status == 'OK') {
                    directionsDisplay.setDirections(result);
                  }
                });
              }

                //dragable position
                restmarker = new google.maps.Marker({
                    map: singlemap,
                    draggable: false,
                    animation: google.maps.Animation.DROP,
                    position: posit2
                });

        var yourdist = distanceInKmBetweenEarthCoordinates(posit1.lat, posit1.lng, posit2.lat, posit2.lng);
        var yourdistance = parseFloat(Math.round(yourdist * 100) / 100).toFixed(2);

        $('.distancekm').html(yourdistance + ' Kilometers from your current location.');
        $('#deliinfo').html('Distance: ' + yourdistance + ' km<br>Distance Covered: 25km<br>Deliver Fee On Arrive: RM 7.00 <br>');
    });

    var input = document.getElementById('locationauto');
    var options = {
        types: ['(regions)'],
        componentRestrictions: {
            country: 'my'
        }
    };
    autocomplete = new google.maps.places.Autocomplete(input, options);

    $('#changeloc').on('submit', function(e) {
        e.preventDefault();
        var pos = {
            lat: $('#droplat').val(),
            lng: $('#droplng').val()
        };

        addressmanual = $('#locationauto').val();

        geocoder.geocode({
            'address': addressmanual
        }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                var pos1 = {
                    lat: results[0].geometry.location.lat(),
                    lng: results[0].geometry.location.lng()
                }
                var yourdist = distanceInKmBetweenEarthCoordinates(pos1.lat, pos1.lng, pos.lat, pos.lng);
                var yourdistance = parseFloat(Math.round(yourdist * 100) / 100).toFixed(2);
                $('.distancekm').html(yourdistance + ' Kilometers from your current location.');
                $('#deliinfo').html('Distance: ' + yourdistance + ' km<br>Distance Covered: 25km<br>Deliver Fee On Arrive: RM 7.00 <br>');
            };
        });
    });





    function distanceInKmBetweenEarthCoordinates(lat1, lon1, lat2, lon2) {
        var earthRadiusKm = 6371;

        var dLat = degreesToRadians(lat2 - lat1);
        var dLon = degreesToRadians(lon2 - lon1);

        lat1 = degreesToRadians(lat1);
        lat2 = degreesToRadians(lat2);

        var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
            Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
        var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        return earthRadiusKm * c;
    }

    $('.add_to_cart_inline  a').append('<i class="ml-5 ion-bag"><i>')

});