Advertisement
Guest User

Untitled

a guest
Sep 4th, 2015
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.39 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script
  5. src="http://maps.googleapis.com/maps/api/js">
  6. </script>
  7.  
  8. <script>
  9.  
  10. var directionDisplay;
  11. var directionsService;
  12. var stepDisplay;
  13.  
  14. var position;
  15. var marker = [];
  16. var polyline = [];
  17. var poly2 = [];
  18. var poly = null;
  19. var startLocation = [];
  20. var endLocation = [];
  21. var timerHandle = [];
  22.  
  23. var speed = 0.000005, wait = 1;
  24. var infowindow = null;
  25.  
  26. var myPano;
  27. var panoClient;
  28. var nextPanoId;
  29.  
  30. var startLoc = new Array();
  31. startLoc[0] = 'San Francisco, CA';
  32. startLoc[1] = 'Oakland, CA';
  33. startLoc[2] = 'Oakland, CA';
  34. startLoc[3] = 'Hayward, CA';
  35.  
  36. var endLoc = new Array();
  37. endLoc[0] = 'San Leandro, CA';
  38. endLoc[1] = 'Orinda, CA';
  39. endLoc[2] = 'Hayward, CA';
  40. endLoc[3] = 'Concord, CA';
  41.  
  42. var Colors = ["#FF0000", "#00FF00", "#0000FF"];
  43.  
  44.  
  45. function initialize() {
  46. var mapProp = {
  47. center:new google.maps.LatLng(50.126550, 8.686689),
  48. zoom:12,
  49. mapTypeId:google.maps.MapTypeId.ROADMAP
  50. };
  51. var map=new google.maps.Map(document.getElementById("googleMap"), mapProp);
  52. }
  53. google.maps.event.addDomListener(window, 'load', initialize);
  54.  
  55.  
  56. function setRoutes() {
  57. var directionsDisplay = new Array();
  58.  
  59. for (var i = 0; i < startLoc.length; i++) {
  60. var rendererOptions = {
  61. map: map,
  62. suppressMarkers: true,
  63. preserveViewport: true
  64. }
  65. directionsService = new google.maps.DirectionsService();
  66. var travelMode = google.maps.DirectionsTravelMode.DRIVING;
  67.  
  68. var request = {
  69. origin: startLoc[i],
  70. destination: endLoc[i],
  71. travelMode: travelMode
  72. };
  73.  
  74. directionsService.route(request, makeRouteCallback(i, directionsDisplay[i]));
  75. }
  76.  
  77. function startAnimation(index) {
  78. if (timerHandle[index]) clearTimeout(timerHandle[index]);
  79. eol[index]=polyline[index].Distance();
  80. map.setCenter(polyline[index].getPath().getAt(0));
  81.  
  82. poly2[index] = new google.maps.Polyline({path: [polyline[index].getPath().getAt(0)], strokeColor:"#FFFF00", strokeWeight:3});
  83.  
  84. timerHandle[index] = setTimeout("animate("+index+",50)",2000); // Allow time for the initial map display
  85. }
  86.  
  87. function makeRouteCallback(routeNum, disp) {
  88. if (polyline[routeNum] && (polyline[routeNum].getMap() != null)) {
  89. startAnimation(routeNum);
  90. return;
  91. }
  92. return function(response, status){
  93.  
  94. if (status == google.maps.DirectionsStatus.OK){
  95.  
  96. var bounds = new google.maps.LatLngBounds();
  97. var route = response.routes[0];
  98. startLocation[routeNum] = new Object();
  99. endLocation[routeNum] = new Object();
  100.  
  101.  
  102. polyline[routeNum] = new google.maps.Polyline({
  103. path: [],
  104. strokeColor: '#FFFF00',
  105. strokeWeight: 3
  106. });
  107.  
  108. poly2[routeNum] = new google.maps.Polyline({
  109. path: [],
  110. strokeColor: '#FFFF00',
  111. strokeWeight: 3
  112. });
  113.  
  114.  
  115. // For each route, display summary information.
  116. var path = response.routes[0].overview_path;
  117. var legs = response.routes[0].legs;
  118.  
  119.  
  120. disp = new google.maps.DirectionsRenderer(rendererOptions);
  121. disp.setMap(map);
  122. disp.setDirections(response);
  123.  
  124.  
  125. //Markers
  126. for (i=0;i<legs.length;i++) {
  127. if (i == 0) {
  128. startLocation[routeNum].latlng = legs[i].start_location;
  129. startLocation[routeNum].address = legs[i].start_address;
  130. // marker = google.maps.Marker({map:map,position: startLocation.latlng});
  131. marker[routeNum] = createMarker(legs[i].start_location,"start",legs[i].start_address,"green");
  132. }
  133. endLocation[routeNum].latlng = legs[i].end_location;
  134. endLocation[routeNum].address = legs[i].end_address;
  135. var steps = legs[i].steps;
  136.  
  137. for (j=0;j<steps.length;j++) {
  138. var nextSegment = steps[j].path;
  139. var nextSegment = steps[j].path;
  140.  
  141. for (k=0;k<nextSegment.length;k++) {
  142. polyline[routeNum].getPath().push(nextSegment[k]);
  143. //bounds.extend(nextSegment[k]);
  144. }
  145.  
  146. }
  147. }
  148.  
  149. }
  150.  
  151. polyline[routeNum].setMap(map);
  152. //map.fitBounds(bounds);
  153. startAnimation(routeNum);
  154.  
  155. } // else alert("Directions request failed: "+status);
  156. }
  157. }
  158.  
  159. function getLocation() {
  160. if (navigator.geolocation) {
  161. navigator.geolocation.getCurrentPosition(showPosition);
  162. } else {
  163. document.getElementById("demo").innerHTML = "Geolocation is not supported by this browser.";
  164. }
  165.  
  166. setRoutes();
  167. }
  168.  
  169. function createMarker(latlng, label, html) {
  170. var contentString = '<b>'+label+'</b><br>'+html;
  171. var marker = new google.maps.Marker({
  172. position: latlng,
  173. map: map,
  174. title: "A marker"
  175. })
  176.  
  177. google.maps.event.addListener(marker, 'click', function() {
  178. infowindow.setContent(contentString);
  179. infowindow.open(map, marker);
  180. });
  181.  
  182. return marker;
  183. }
  184.  
  185.  
  186. var lastVertex = 1;
  187. var stepNum = 0;
  188. var step = 50;
  189. var tick = 100;
  190. var eol = [];
  191.  
  192. function updatePoly(i,d) {
  193. // Spawn a new polyline every 20 vertices, because updating a 100-vertex poly is too slow
  194. if (poly2[i].getPath().getLength() > 20) {
  195. poly2[i]=new google.maps.Polyline([polyline[i].getPath().getAt(lastVertex-1)]);
  196. // map.addOverlay(poly2)
  197. }
  198.  
  199. if (polyline[i].GetIndexAtDistance(d) < lastVertex+2) {
  200. if (poly2[i].getPath().getLength()>1) {
  201. poly2[i].getPath().removeAt(poly2[i].getPath().getLength()-1)
  202. }
  203. poly2[i].getPath().insertAt(poly2[i].getPath().getLength(),polyline[i].GetPointAtDistance(d));
  204. } else {
  205. poly2[i].getPath().insertAt(poly2[i].getPath().getLength(),endLocation[i].latlng);
  206. }
  207. }
  208.  
  209. function animate(index,d) {
  210. if (d>eol[index]) {
  211.  
  212. marker[index].setPosition(endLocation[index].latlng);
  213. return;
  214. }
  215. var p = polyline[index].GetPointAtDistance(d);
  216.  
  217. //map.panTo(p);
  218. marker[index].setPosition(p);
  219. updatePoly(index,d);
  220. timerHandle[index] = setTimeout("animate("+index+","+(d+step)+")", tick);
  221. }
  222.  
  223. function showPosition(position) {
  224. document.getElementById("demo").innerHTML = "Latitude: " + position.coords.latitude +
  225. "<br>Longitude: " + position.coords.longitude;
  226. lat = position.coords.latitude;
  227. lon = position.coords.longitude;
  228. latlon = new google.maps.LatLng(lat, lon)
  229. mapholder = document.getElementById('googleMap');
  230.  
  231. var myOptions = {
  232. center:latlon,zoom:14,
  233. mapTypeId:google.maps.MapTypeId.ROADMAP,
  234. mapTypeControl:false,
  235. navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL}
  236. }
  237.  
  238. var map = new google.maps.Map(document.getElementById("googleMap"), myOptions);
  239. var marker = new google.maps.Marker({position:latlon,map:map,title:"You are here!"});
  240. //latlon2 = new google.maps.LatLng(lat-20, lon+40);
  241. //var marker2 = new google.maps.Marker({position:new google.maps.LatLng(lat-20, lon+40),map:map,title:"This is the other guy!"});
  242. //var marker3 = new google.maps.Marker({position:new google.maps.LatLng(lat-1, lon+2),map:map,title:"This is the other guy!"});
  243. //var marker4 = new google.maps.Marker({position:new google.maps.LatLng(lat+1, lon-2),map:map,title:"This is the other guy!"});
  244. }
  245. </script>
  246.  
  247. <link rel="stylesheet" href="css/main.css">
  248.  
  249. </head>
  250.  
  251. <body>
  252. <p id="demo">test</p><br>
  253. <button type="button" onclick="getLocation()">Locate me</button> <br>
  254. <input type="text"><button>Search address</button>
  255. <div id="googleMap" style="width:1024px;height:687px; position: relative; top: 81px; left: -8px;"></div>
  256.  
  257. </body>
  258. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement