google map
asdunknown
javascript
a year ago
3.4 kB
1
Indexable
Never
// DISTANCE CALCULATOR!!!! INCREASE DECIMAL POINTS //HTML STARTS HERE <!doctype html> <html> <head> <title>Distance Matrix Service</title> <script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script> <!-- jsFiddle will insert css and js --> </head> <body> <div id="container"> <div id="map"></div> <div id="sidebar"> <h3 style="flex-grow: 0">Request</h3> <pre style="flex-grow: 1" id="request"></pre> <h3 style="flex-grow: 0">Response</h3> <pre style="flex-grow: 1" id="response"></pre> </div> </div> src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initMap&v=weekly" defer ></script> </body> </html> //CSS STARTS HERE html, body { height: 100%; margin: 0; padding: 0; } #container { height: 100%; display: flex; } #sidebar { flex-basis: 15rem; flex-grow: 1; padding: 1rem; max-width: 30rem; height: 100%; box-sizing: border-box; overflow: auto; } #map { flex-basis: 0; flex-grow: 4; height: 100%; } #sidebar { flex-direction: column; } //JS STARTS HERE function initMap() { const bounds = new google.maps.LatLngBounds(); const markersArray = []; const map = new google.maps.Map(document.getElementById("map"), { center: { lat: 55.53, lng: 9.4 }, zoom: 10, }); const geocoder = new google.maps.Geocoder(); const service = new google.maps.DistanceMatrixService(); const origin1 = { lat: 43.363491, lng: -80.314143 }; const origin2 = "Greenwich, England"; const destinationA = "Stockholm, Sweden"; const destinationB = { lat: 43.364759, lng: -80.314267 }; const request = { origins: [origin1, origin2], destinations: [destinationA, destinationB], travelMode: google.maps.TravelMode.WALKING, unitSystem: google.maps.UnitSystem.METRIC, avoidHighways: false, avoidTolls: false, }; document.getElementById("request").innerText = JSON.stringify( request, null, 2, ); service.getDistanceMatrix(request).then((response) => { document.getElementById("response").innerText = JSON.stringify( response, null, 2, ); const originList = response.originAddresses; const destinationList = response.destinationAddresses; deleteMarkers(markersArray); const showGeocodedAddressOnMap = (asDestination) => { const handler = ({ results }) => { map.fitBounds(bounds.extend(results[0].geometry.location)); markersArray.push( new google.maps.Marker({ map, position: results[0].geometry.location, label: asDestination ? "D" : "O", }), ); }; return handler; }; for (let i = 0; i < originList.length; i++) { const results = response.rows[i].elements; geocoder .geocode({ address: originList[i] }) .then(showGeocodedAddressOnMap(false)); for (let j = 0; j < results.length; j++) { geocoder .geocode({ address: destinationList[j] }) .then(showGeocodedAddressOnMap(true)); } } }); } function deleteMarkers(markersArray) { for (let i = 0; i < markersArray.length; i++) { markersArray[i].setMap(null); } markersArray = []; } window.initMap = initMap; // use jsfiddle