Commit 01ae2e35c7e734e36ece2088f630553842b44539
1 parent
a0fba7c8
Exists in
master
and in
1 other branch
Falied smooth movements
Showing
9 changed files
with
240 additions
and
196 deletions
Show diff stats
includes/images/c4.png
16.6 KB
1.32 KB
| ... | ... | @@ -0,0 +1,10 @@ |
| 1 | +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> | |
| 2 | +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="50px" height="25px" viewBox="0 0 500 250" preserveAspectRatio="xMidYMid meet"> | |
| 3 | +<g id="layer101" fill="#1e1e30" stroke="none"> | |
| 4 | + <path d="M267 244 c-2 -3 -58 -6 -123 -7 -66 -1 -125 -6 -132 -10 -17 -11 -17 -193 1 -204 6 -4 65 -9 130 -10 65 -1 121 -4 125 -7 4 -2 50 -1 101 3 117 10 131 22 131 115 0 73 -17 103 -63 110 -58 9 -165 15 -170 10z"/> | |
| 5 | + </g> | |
| 6 | +<g id="layer102" fill="#030374" stroke="none"> | |
| 7 | + <path d="M290 233 c0 -9 -35 -11 -129 -10 -95 1 -133 -1 -143 -11 -14 -14 -19 -154 -6 -167 17 -17 91 -25 181 -19 79 5 97 4 97 -7 0 -12 2 -12 9 0 7 10 21 12 55 7 57 -9 106 1 106 20 0 8 7 17 15 20 11 4 15 21 15 59 0 38 -4 55 -15 59 -8 3 -15 12 -15 20 0 19 -49 29 -106 20 -34 -5 -48 -3 -55 7 -6 9 -9 10 -9 2z m68 -47 c20 -20 20 -102 0 -122 -21 -21 -211 -33 -223 -14 -7 11 8 12 71 7 l79 -6 0 74 0 74 -79 -6 c-63 -5 -78 -4 -71 7 12 19 202 7 223 -14z m-238 -59 c0 -55 -14 -90 -27 -71 -5 6 -16 13 -25 17 -41 15 -30 102 14 109 35 6 38 1 38 -55z"/> | |
| 8 | + </g> | |
| 9 | + | |
| 10 | +</svg> | |
| 0 | 11 | \ No newline at end of file | ... | ... |
index.html
| ... | ... | @@ -11,9 +11,13 @@ |
| 11 | 11 | <body ng-controller="myCtrl"> |
| 12 | 12 | <div class="container-fluid"> |
| 13 | 13 | <div class="left"> |
| 14 | + <!-- <span>{{timer}}</span> | |
| 15 | + <span>{{timeTaken}}</span> | |
| 16 | + <span class="add-stop" ng-click="addStop()">add</span> --> | |
| 14 | 17 | <form> |
| 15 | 18 | <div class="" ng-repeat="stop in stops"> |
| 16 | - <div address-search placeholder="Enter Pickup" model="stop" order="{{$index}}" lbl="($first)? 'Pickup':($last)?'Drop':'Via'"></div> | |
| 19 | + <!-- lbl="($first)? 'Pickup':($last)?'Drop':'Via'" --> | |
| 20 | + <div address-search placeholder="Enter Pickup" model="stop" order="{{$index}}" ></div> | |
| 17 | 21 | </div> |
| 18 | 22 | </form> |
| 19 | 23 | |
| ... | ... | @@ -25,8 +29,18 @@ |
| 25 | 29 | <script src="./bower_components/angular/angular.js" charset="utf-8"></script> |
| 26 | 30 | <script src="./bower_components/angular-sanitize/angular-sanitize.js" charset="utf-8"></script> |
| 27 | 31 | <script src="./bower_components/angular-ui-select/dist/select.js" charset="utf-8"></script> |
| 32 | + <script src="./bower_components/jquery/dist/jquery.js" charset="utf-8"></script> | |
| 28 | 33 | <script src="./src/js/app.js" charset="utf-8"></script> |
| 29 | 34 | <script src="./src/js/directives/address-search/directive.js" charset="utf-8"></script> |
| 30 | 35 | <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB4fiyAw8BEs35uf2U48jEicFrRtqgD5aQ&libraries=weather,visualization,places,drawing,geometry&sensor=false&language=en&v=3.13"></script> |
| 36 | + | |
| 37 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.compatibility.js"></script> | |
| 38 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.js"></script> | |
| 39 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/marker-animate-unobtrusive/0.2.8/vendor/markerAnimate.js"></script> | |
| 40 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/marker-animate-unobtrusive/0.2.8/SlidingMarker.min.js"></script> | |
| 41 | + <script> | |
| 42 | + SlidingMarker.initializeGlobally(); | |
| 43 | + </script> | |
| 44 | + | |
| 31 | 45 | </body> |
| 32 | 46 | </html> | ... | ... |
src/js/app.js
| 1 | 1 | //AIzaSyAPYatPrCcmNcVdAO_MF0YhO3c1mgdLvuQ |
| 2 | 2 | var app = angular.module('batmanDelivers', ['ngSanitize', 'ui.select']); |
| 3 | 3 | |
| 4 | -/////////// | |
| 5 | -//Controller | |
| 6 | -/////////// | |
| 7 | - | |
| 8 | -app.controller('myCtrl', function($scope, $http, $timeout, $rootScope) { | |
| 9 | - | |
| 10 | - var initializing = true; | |
| 11 | - | |
| 12 | - | |
| 13 | - var map = null; | |
| 14 | - var waypoints = []; | |
| 15 | - var markers = []; | |
| 16 | - var route = null; | |
| 17 | - var map = null; | |
| 18 | - var marker = null; | |
| 19 | - | |
| 20 | - var myLatLng = { lat: 0, lng: 0 }; | |
| 21 | - var directionsService = new google.maps.DirectionsService; | |
| 22 | - var directionsDisplay = new google.maps.DirectionsRenderer({ | |
| 23 | - polylineOptions: { | |
| 24 | - strokeColor: "#d8d8d8" | |
| 25 | - } | |
| 26 | - }); | |
| 27 | - | |
| 28 | - | |
| 29 | - var end; | |
| 30 | - var marked; | |
| 31 | - var valid = true; | |
| 32 | - initMap(); | |
| 33 | - | |
| 4 | +app.controller('myCtrl', function($scope, $http, $timeout, $rootScope, $interval) { | |
| 5 | + | |
| 6 | + var map; | |
| 34 | 7 | $scope.stops = [{ |
| 35 | 8 | "Description": "Start typing to search...", |
| 36 | - "changed": false, | |
| 37 | 9 | valid: false, |
| 38 | 10 | id: 1 |
| 39 | 11 | |
| 40 | 12 | }, { |
| 41 | 13 | "Description": "Start typing to search...", |
| 42 | - "changed": false, | |
| 43 | 14 | valid: false, |
| 44 | 15 | id: 2 |
| 45 | 16 | }] |
| 17 | + | |
| 18 | + var directionsService = new google.maps.DirectionsService; | |
| 19 | + var directionsDisplay = new google.maps.DirectionsRenderer(); | |
| 46 | 20 | |
| 21 | + | |
| 47 | 22 | |
| 48 | - $scope.$on('StopChanged', function () { | |
| 49 | - var validstops = $scope.stops.filter(function (x) { return x.valid; }); | |
| 50 | - | |
| 51 | - if (validstops.length == 1) { | |
| 52 | - map.panTo(validstops[0].$marker.getPosition()); | |
| 53 | - } else if (validstops.length > 1) { | |
| 54 | - var bounds = new google.maps.LatLngBounds(); | |
| 55 | - | |
| 56 | - for (var i = 0; i < validstops.length; i++) { | |
| 57 | - bounds.extend(validstops[i].$marker.getPosition()); | |
| 58 | - } | |
| 59 | - | |
| 60 | - map.fitBounds(bounds, 100); | |
| 61 | - } | |
| 62 | - | |
| 63 | - | |
| 64 | - if (validstops.length == $scope.stops.length) { | |
| 65 | - var waypoints = []; | |
| 66 | - if ($scope.stops.length > 2) { | |
| 67 | - waypoints = $scope.stops.slice(1, $scope.stops.length - 2); | |
| 68 | - } | |
| 69 | - calculateAndDisplayRoute($scope.stops[0], $scope.stops[$scope.stops.length - 1], waypoints); | |
| 70 | - } | |
| 71 | - }); | |
| 72 | - | |
| 73 | - | |
| 74 | - //$scope.$watch('stops', function () { | |
| 75 | - // if (initializing) { | |
| 76 | - // $timeout(function() { initializing = false; }); | |
| 77 | - // } else { | |
| 78 | - // if ($scope.stops[$scope.stops.length -1].Description != "Start typing to search...") { | |
| 79 | - // $scope.stops.forEach(function(stop, i){ | |
| 80 | - // if (stop.Description != "Start typing to search...") { | |
| 81 | - // valid = true; | |
| 82 | - // } else { | |
| 83 | - // valid = false; | |
| 84 | - // } | |
| 85 | - // }) | |
| 86 | - // } else { | |
| 87 | - // valid = false; | |
| 88 | - // } | |
| 89 | - | |
| 90 | - // $scope.stops.forEach(function(stop, i){ | |
| 91 | - // if (stop.Description != "Start typing to search..." && stop.changed == false) { | |
| 92 | - // if (i != 0 && i != $scope.stops.length-1) { | |
| 93 | - // drawMarker(stop.Latitude, stop.Longitude); | |
| 94 | - // waypoints.push({ | |
| 95 | - // location: stop.Description, | |
| 96 | - // stopover: true | |
| 97 | - // }); | |
| 98 | - // } else { | |
| 99 | - // drawMarker(stop.Latitude, stop.Longitude); | |
| 100 | - // } | |
| 101 | - // } | |
| 102 | - // }) | |
| 103 | - | |
| 104 | - // if (valid == true) { | |
| 105 | - // calculateAndDisplayRoute($scope.stops[0].Description, $scope.stops[$scope.stops.length - 1].Description); | |
| 106 | - // } | |
| 107 | - // } | |
| 108 | - | |
| 109 | - //}, true); | |
| 110 | - | |
| 111 | - function calculateAndDisplayRoute(start, end, waypoints) { | |
| 112 | - directionsService.route({ | |
| 113 | - origin: start.$marker.getPosition(), | |
| 114 | - destination: end.$marker.getPosition(), | |
| 115 | - waypoints: waypoints.map(function (x) { return x.$marker.getPosition(); }), | |
| 116 | - travelMode: 'DRIVING', | |
| 117 | - provideRouteAlternatives: false | |
| 118 | - }, function(response, status) { | |
| 119 | - if (status === 'OK') { | |
| 120 | - directionsDisplay.setDirections(response); | |
| 121 | - directionsDisplay.setOptions({ suppressMarkers: true }); | |
| 122 | - | |
| 123 | - var arrayOfPoints = response.routes[0].overview_path; | |
| 124 | - var marker = new google.maps.Marker({ | |
| 125 | - map: map, | |
| 126 | - position: arrayOfPoints[0] | |
| 127 | - }); | |
| 128 | - | |
| 129 | - var counter = 1; | |
| 130 | - setInterval(function () { | |
| 131 | - marker.setPosition(arrayOfPoints[counter]); | |
| 132 | - counter++; | |
| 133 | - }, 500); | |
| 134 | - } else { | |
| 135 | - console.log("Need more Stops", start, end, waypoints) | |
| 136 | - } | |
| 137 | - }); | |
| 138 | - } | |
| 139 | - | |
| 140 | - function clearMarkers() { | |
| 141 | - markers = []; | |
| 142 | - } | |
| 143 | - | |
| 144 | - function setMapOnAll(map) { | |
| 145 | - for (var i = 0; i < markers.length; i++) { | |
| 146 | - markers[i].setMap(map); | |
| 147 | - } | |
| 148 | - } | |
| 149 | - | |
| 150 | - function drawMarker(lat, lng) { | |
| 151 | - return; | |
| 152 | - var marker = new google.maps.Marker({ | |
| 153 | - position: {lat: lat, lng: lng}, | |
| 154 | - icon: '.././includes/images/c1.png', | |
| 155 | - map: map, | |
| 156 | - }); | |
| 157 | - markers.push(marker); | |
| 158 | - } | |
| 23 | + initMap(); | |
| 24 | + $scope.timer = 0; | |
| 25 | + $scope.timeTaken = 0; | |
| 159 | 26 | |
| 160 | 27 | function initMap() { |
| 161 | - | |
| 162 | 28 | map = new google.maps.Map(document.getElementById('map-div'), { |
| 163 | - center: { lat: 51.491903, lng: -0.024640 }, | |
| 164 | - zoom: 10, | |
| 29 | + center: { | |
| 30 | + lat: 51.491903, | |
| 31 | + lng: -0.024640 | |
| 32 | + }, | |
| 33 | + mapTypeId: 'roadmap', | |
| 34 | + zoom: 11, | |
| 165 | 35 | mapTypeControl: false, |
| 166 | 36 | styles: [{ |
| 167 | 37 | "featureType": "all", |
| ... | ... | @@ -314,44 +184,127 @@ app.controller('myCtrl', function($scope, $http, $timeout, $rootScope) { |
| 314 | 184 | } |
| 315 | 185 | ] |
| 316 | 186 | } |
| 317 | - ] | |
| 187 | + ] | |
| 318 | 188 | }); |
| 319 | - directionsDisplay.setMap(map); | |
| 320 | 189 | $rootScope.map = map; |
| 321 | 190 | } |
| 191 | + $scope.addStop = function () { | |
| 192 | + $scope.stops.push({ | |
| 193 | + Description: "Start typing to search..." | |
| 194 | + }) | |
| 195 | + } | |
| 196 | + $scope.$on('StopChanged', function() { | |
| 197 | + var validstops = $scope.stops.filter(function(x) { | |
| 198 | + return x.valid; | |
| 199 | + }); | |
| 200 | + | |
| 201 | + if (validstops.length == 1) { | |
| 202 | + | |
| 203 | + map.panTo(validstops[0].$marker.getPosition()); | |
| 204 | + } else if (validstops.length > 1) { | |
| 205 | + var bounds = new google.maps.LatLngBounds(); | |
| 206 | + console.log(validstops) | |
| 207 | + for (var i = 0; i < validstops.length; i++) { | |
| 208 | + bounds.extend(validstops[i].$marker.getPosition()); | |
| 209 | + } | |
| 210 | + | |
| 211 | + map.fitBounds(bounds, 100); | |
| 212 | + } | |
| 213 | + | |
| 214 | + | |
| 215 | + if (validstops.length == $scope.stops.length) { | |
| 216 | + var waypoints = []; | |
| 217 | + if ($scope.stops.length > 2) { | |
| 218 | + waypoints = $scope.stops.slice(1, $scope.stops.length - 1); | |
| 219 | + } | |
| 220 | + calcRoute($scope.stops[0], $scope.stops[$scope.stops.length - 1], waypoints); | |
| 221 | + | |
| 222 | + } | |
| 322 | 223 | }); |
| 224 | + function calcRoute(start, end, waypoints) { | |
| 225 | + console.log(waypoints) | |
| 226 | + directionsService.route({ | |
| 227 | + origin: start.$marker.getPosition(), | |
| 228 | + destination: end.$marker.getPosition(), | |
| 229 | + waypoints: waypoints.map(function(x){ | |
| 230 | + return { | |
| 231 | + location: x.Description, | |
| 232 | + stopover: true | |
| 233 | + }; | |
| 234 | + }), | |
| 235 | + travelMode: 'DRIVING', | |
| 236 | + provideRouteAlternatives: false | |
| 237 | + }, function(response, status) { | |
| 238 | + if (status === 'OK') { | |
| 239 | + directionsDisplay.setMap(map); | |
| 240 | + directionsDisplay.setDirections(response); | |
| 241 | + directionsDisplay.setOptions({ | |
| 242 | + suppressMarkers: true | |
| 243 | + }); | |
| 244 | + $scope.timer = response.routes[0].overview_path.length; | |
| 245 | + follow(response.routes[0].overview_path, start, end); | |
| 246 | + } else { | |
| 247 | + console.log("Need more Stops", start, end, waypoints) | |
| 248 | + } | |
| 249 | + }); | |
| 250 | + } | |
| 251 | + function follow(overview_path, start, end) { | |
| 252 | + | |
| 253 | + var marker = new google.maps.Marker({ | |
| 254 | + position: overview_path[0], | |
| 255 | + icon: { | |
| 256 | + url: "../includes/images/car.svg", | |
| 257 | + rotation: 0 | |
| 258 | + }, | |
| 259 | + map: map, | |
| 260 | + optimized: false | |
| 261 | + }); | |
| 262 | + var from; | |
| 263 | + var to; | |
| 264 | + var heading; | |
| 265 | + var arrOfRots = []; | |
| 266 | + var pre = [0]; | |
| 267 | + var turn; | |
| 268 | + var c = 0; | |
| 269 | + var i = c; | |
| 270 | + | |
| 271 | + //Rotating marker/icon | |
| 272 | + // $('img[src="../includes/images/car.svg"]').css({ | |
| 273 | + // 'transform': 'rotate(' + heading + 'deg)' | |
| 274 | + // }); | |
| 275 | + | |
| 276 | + $interval(function(){ | |
| 277 | + //Smooth Movements from turn to turn | |
| 278 | + for(i ; i < overview_path.length; ){ | |
| 279 | + i++; | |
| 280 | + from = new google.maps.LatLng(overview_path[c].lat(), overview_path[c].lng()); | |
| 281 | + to = new google.maps.LatLng(overview_path[c + i].lat(), overview_path[c + i].lng()); | |
| 282 | + heading = Math.round(google.maps.geometry.spherical.computeHeading(from, to)); | |
| 283 | + pre.push(heading); //Pushing the heading so the next index can compare to it. | |
| 284 | + //arrOfRots.push(heading) These will be used to create the curved polyline. | |
| 285 | + turn = Math.abs(pre[0] - heading); | |
| 286 | + if(turn > 45 && turn < 135) { | |
| 287 | + c += i; | |
| 288 | + console.log(turn); | |
| 289 | + break; | |
| 290 | + } else { | |
| 291 | + pre.splice(0, 1); //Removes the current previous heading, so a new one can be added. | |
| 292 | + } | |
| 293 | + c += i; | |
| 294 | + } | |
| 295 | + marker.setPosition(overview_path[c]); | |
| 296 | + //Instead of setPosition draw a curved polyline using the array of rotations; | |
| 297 | + }, 1000) | |
| 298 | + //arrOfRots.push(heading); | |
| 299 | + //$scope.timeTaken++; | |
| 300 | + | |
| 301 | + } | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | +}); | |
| 306 | + | |
| 323 | 307 | |
| 308 | + | |
| 324 | 309 | |
| 325 | -// if (initializing) { | |
| 326 | -// $timeout(function() { initializing = false; }); | |
| 327 | -// } else { | |
| 328 | -// $scope.stops.forEach(function(stop, i){ | |
| 329 | -// if (i != 0 && i != $scope.stops.length-1) { | |
| 330 | -// directionsDisplay.set('directions', null); | |
| 331 | -// if (stop.Description == "Start typing to search...") { | |
| 332 | -// console.log("Typing not complete"); | |
| 333 | -// } else { | |
| 334 | -// waypoints.push({ | |
| 335 | -// location: stop.Description, | |
| 336 | -// stopover: true | |
| 337 | -// }); | |
| 338 | -// calculateAndDisplayRoute($scope.stops[0].Description, $scope.stops[$scope.stops.length - 1].Description); | |
| 339 | -// } | |
| 340 | -// | |
| 341 | -// | |
| 342 | -// | |
| 343 | -// } else { | |
| 344 | -// if (stop.Latitude != undefined && stop.Longitude != undefined) { | |
| 345 | -// console.log(stop.Longitude); | |
| 346 | -// console.log("Typing not complete"); | |
| 347 | -// | |
| 348 | -// drawMarker(stop.Latitude, stop.Longitude); | |
| 349 | -// | |
| 350 | -// directionsDisplay.set('directions', null); | |
| 351 | -// | |
| 352 | -// calculateAndDisplayRoute($scope.stops[0].Description, $scope.stops[$scope.stops.length - 1].Description); | |
| 353 | -// | |
| 354 | -// } | |
| 355 | -// } | |
| 356 | -// }) | |
| 357 | -// } | |
| 310 | + | ... | ... |
src/js/directives/address-search/directive.js
| ... | ... | @@ -45,7 +45,6 @@ |
| 45 | 45 | scope.address.Latitude = scope.result.geometry.location.lat(); |
| 46 | 46 | scope.address.Longitude = scope.result.geometry.location.lng(); |
| 47 | 47 | scope.address.Description = newvalue.description; |
| 48 | - scope.address.changed = false; | |
| 49 | 48 | scope.address.valid = true; |
| 50 | 49 | |
| 51 | 50 | |
| ... | ... | @@ -63,15 +62,6 @@ |
| 63 | 62 | }); |
| 64 | 63 | } |
| 65 | 64 | }); |
| 66 | - | |
| 67 | - scope.addStop = function () { | |
| 68 | - scope.stops.push({ | |
| 69 | - Description: "Start typing to search..." | |
| 70 | - }) | |
| 71 | - } | |
| 72 | - scope.removeStop = function (index) { | |
| 73 | - scope.stops.splice(index, 1); | |
| 74 | - } | |
| 75 | 65 | } |
| 76 | 66 | } |
| 77 | 67 | } | ... | ... |
src/js/directives/address-search/partial.html
src/less/styles.less
| ... | ... | @@ -0,0 +1,80 @@ |
| 1 | +THIS IS CODE THAT HAS BEEN REMOVED | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + var line = new google.maps.Polyline({ | |
| 6 | + path: [{lat: response.routes[0].overview_path[0].lat(), lng: response.routes[0].overview_path[0].lng()}, {lat: response.routes[0].overview_path[1].lat(), lng: response.routes[0].overview_path[1].lng()}], | |
| 7 | + icons: [{ | |
| 8 | + icon: lineSymbol, | |
| 9 | + offset: '100%' | |
| 10 | + }], | |
| 11 | + map: map | |
| 12 | + }); | |
| 13 | + response.routes[0].overview_path.forEach(function(x, i){ | |
| 14 | + if (i % 2 == 0){ | |
| 15 | + curvedLine({LatStart: x.lat(), LngStart: x.lng(), LatEnd: response.routes[0].overview_path[i + 2].lat(), LngEnd: response.routes[0].overview_path[i + 2].lng()}) | |
| 16 | + } | |
| 17 | + var line = new google.maps.Polyline({ | |
| 18 | + path: [{lat: x.lat(), lng: x.lng()}, {lat: response.routes[0].overview_path[i + 1].lat(), lng: response.routes[0].overview_path[i + 1].lng()}], | |
| 19 | + map: map | |
| 20 | + }); | |
| 21 | + }) | |
| 22 | + function animateCircle(line) { | |
| 23 | + var count = 0; | |
| 24 | + window.setInterval(function() { | |
| 25 | + count = (count + 1) % 200; | |
| 26 | + | |
| 27 | + var icons = line.get('icons'); | |
| 28 | + console.log(icons); | |
| 29 | + icons[0].offset = (count / 2) + '%'; | |
| 30 | + line.set('icons', icons); | |
| 31 | + }, 20); | |
| 32 | + } | |
| 33 | + animateCircle(line); | |
| 34 | + | |
| 35 | + $scope.stops.forEach(function(x) { | |
| 36 | + try{ | |
| 37 | + //Car Sensors in concept | |
| 38 | + if(x.Latitude.toFixed(3) == overview_path[overview_path.length - 1].lat().toFixed(3) && x.Longitude.toFixed(3) == overview_path[overview_path.length - 1].lng().toFixed(3)){ | |
| 39 | + var m = x.$marker; | |
| 40 | + m.setMap(null); | |
| 41 | + } | |
| 42 | + } | |
| 43 | + catch(e){ | |
| 44 | + console.log(e); | |
| 45 | + var m = x.$marker; | |
| 46 | + m.setMap(null); | |
| 47 | + clearInterval($scope.drive); | |
| 48 | + } | |
| 49 | + finally{ | |
| 50 | + console.log('I am alerted regardless of the outcome above') | |
| 51 | + } | |
| 52 | + }); | |
| 53 | + | |
| 54 | + | |
| 55 | + function calcDistance(p1, p2) { | |
| 56 | + return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 1000).toFixed(2); | |
| 57 | + } | |
| 58 | + | |
| 59 | + var p1 = new google.maps.LatLng(overview_path[counter].lat(), overview_path[counter].lng()); | |
| 60 | + var p2 = new google.maps.LatLng(overview_path[counter + 1].lat(), overview_path[counter + 1].lng()); | |
| 61 | + var difference = calcDistance(p1, p2); | |
| 62 | + | |
| 63 | + | |
| 64 | + p1 = new google.maps.LatLng(overview_path[counter].lat(), overview_path[counter].lng()); | |
| 65 | + p2 = new google.maps.LatLng(overview_path[counter + 1].lat(), overview_path[counter + 1].lng()); | |
| 66 | + | |
| 67 | + <script src="https://gist.github.com/glebcha/e16abf1fa73d835e9422.js"></script> | |
| 68 | + | |
| 69 | + | |
| 70 | + if (difference < 0.09){ | |
| 71 | + setTimeout(function(){ | |
| 72 | + | |
| 73 | + }, 500) | |
| 74 | + } else { | |
| 75 | + setTimeout(function(){ | |
| 76 | + marker.setPosition(overview_path[counter]); | |
| 77 | + map.panTo(marker.getPosition()); | |
| 78 | + counter++; | |
| 79 | + }, 1000) | |
| 80 | + } | |
| 0 | 81 | \ No newline at end of file | ... | ... |