Introduction 
 
This article demonstrates the following:: 
     - Google map using JavaScript
- GeoComplete JavaScript for search address
- Custom pin point for Google map
- Travel mode and Route between pickup and drop off address
- Calculate total distance & time to reach your destination 
1. Initialize Map
     - Here I have created code for map initialization and accessing your location.
     
- I wrote a method inside a document ready for map initialization.
     
- The navigator method is asked for a sharing location that returns your current latitude and longitude.
     
- Using lat and long we can render your current position on the map.
     
     
         - $(document).ready(function()    
- {    
-       
-     initialize();    
- });    
-     
- function initialize()    
- {    
-       
-     navigator.geolocation.getCurrentPosition(doStuff, error, setOptions);    
-     
-     function setOptions(geoLoc)    
-     {    
-         geoLoc.enableHighAccuracy = true;    
-         geoLoc.timeout = 30;    
-         geoLoc.maximumAge = 0;    
-     }    
-     
-     function doStuff(geoLoc)    
-     {    
-         latlong = new google.maps.LatLng(geoLoc.coords.latitude, geoLoc.coords.longitude);    
-         geolatitude = geoLoc.coords.latitude;    
-         geolongitude = geoLoc.coords.longitude;    
-     
-         var mapOptions = {    
-             center: latlong,    
-             zoom: 15,    
-             mapTypeId: google.maps.MapTypeId.ROADMAP    
-         };    
-         var image = 'img/home_alt.png';    
-         map = new google.maps.Map(document.getElementById('mapCanvas'), mapOptions);    
-     
-         marker = new google.maps.Marker(    
-         {    
-             position: latlong,    
-             map: map,    
-             icon: image    
-         });    
-     }    
- }    
         
 
 
          
- When you share location your screen looks like the following image:
  
     
2. Search your location
     
     
         - I used geocomplete JS for the search location.
         
- The following code is for search location and binding your location in textbox and label.
         
         
             - $(function()    
- {    
-     $("#PickupAddress")    
-         .geocomplete()    
-         .bind("geocode:result", function(event, result)    
-         {    
-             $("#spanPick").text($("#PickupAddress").val());    
-             pickUpLatLong = new google.maps.LatLng(result.geometry.location.lat(), result.geometry.location.lng());    
-             routeDirection("PickupAddress", pickUpLatLong);    
-         });    
- });    
             
 
 
3. Custom pinpoint & direction between pick up and drop off & total distance & time.
     
         - Here, I am taking an image variable for saving the custom image path and then attaching this image in the marker.
         
         
             - function routeDirection(id, latLong)    
- {    
-     geocoder = new google.maps.Geocoder();    
-     var mapOptions = {    
-         zoom: 15,    
-         center: latLong,    
-         mapTypeId: google.maps.MapTypeId.ROADMAP    
-     };    
-     map = new google.maps.Map(document.getElementById('mapCanvas'), mapOptions);    
-     var start = $("#PickupAddress").val();    
-     var end = $("#DropOffAddress").val();    
-     if (start != null && (end == null || end == ''))    
-     {    
-         geocoder.geocode(    
-         {    
-             "address": start    
-         }, function(results, status)    
-         {    
-             var image;    
-             if (status == google.maps.GeocoderStatus.OK)    
-             {    
-                 image = 'img/pin_pickup_location.png';    
-                 map = new google.maps.Map(document.getElementById('mapCanvas'), mapOptions);    
-                 marker = new google.maps.Marker(    
-                 {    
-                     position: latLong,    
-                     map: map,    
-                     icon: image    
-                 });    
-             }    
-         });    
-     }    
- }    
             
 
 
              
- For getting direction from pick up address to drop off address we implement directionsService method.
  
- If we get response status OK from Google map, then we can set direction on the map using JSON.
             
             
                 - directionsService.route(request, function(response, status)    
- {    
-     if (status == google.maps.DirectionsStatus.OK)    
-     {    
-         directionsDisplay.setDirections(response);    
-         makeMarker(leg.start_location, "pickup location");    
-         makeMarker(leg.end_location, "dropoff location");    
-     }    
- });    
                 
 
 
                  
- After getting OK status we get response JSON from Google that contains travel mode, distance, time, start location, and end location.
                 
                 
                     - var leg = response.routes[0].legs[0];    
-     
-   
- $("#spanDist").text(leg.distance.text);    
-     
-   
-     
- $("#spanTime").text(leg.duration.text);    
-     
-   
-     
- $("#spanTravelMode").text(response.request.travelMode);    
                     
 
 
             
4. Output
             
             
                 - Test the output and click the following link.