Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Jan 27th, 2012  |  syntax: JavaScript  |  size: 2.97 KB  |  views: 44  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. $(document).ready(function(){
  2.     var myOptions = {
  3.         center: new google.maps.LatLng(45.492751,-122.803631),
  4.         zoom: 12,
  5.         mapTypeId: google.maps.MapTypeId.ROADMAP
  6.     };
  7.    
  8.         var routeDropZone = document.getElementById('route-import');
  9.     var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  10.     var geocoder = new google.maps.Geocoder();
  11.  
  12.         routeDropZone.addEventListener("dragenter", dragEnter, false);
  13.         routeDropZone.addEventListener("dragexit", dragExit, false);
  14.         routeDropZone.addEventListener("dragover", dragOver, false);
  15.         routeDropZone.addEventListener("drop", drop, false);
  16.  
  17.         function dragEnter(evt) {
  18.                 evt.stopPropagation();
  19.                 evt.preventDefault();
  20.         }
  21.  
  22.         function dragExit(evt) {
  23.                 evt.stopPropagation();
  24.                 evt.preventDefault();
  25.         }
  26.  
  27.         function dragOver(evt) {
  28.                 evt.stopPropagation();
  29.                 evt.preventDefault();
  30.         }
  31.  
  32.         function drop(evt) {
  33.                 evt.stopPropagation();
  34.                 evt.preventDefault();
  35.  
  36.                 var files = evt.dataTransfer.files;
  37.                 var count = files.length;
  38.  
  39.                 // Only call the handler if 1 or more files was dropped.
  40.                 if (count > 0)
  41.                         processFiles(files);
  42.         }
  43.  
  44.         function processFiles(files)
  45.         {
  46.                 for(i = 0; i < files.length; i++)
  47.                 {
  48.                         file = files[i];
  49.                         var reader = new FileReader();
  50.                        
  51.                         reader.onerror = function(stuff)
  52.                         {
  53.                                 console.log("error", stuff);
  54.                                 console.log(stuff.getMessage());
  55.                         }
  56.                        
  57.                         /*reader.onprogress = function(e)
  58.                         {
  59.                                 if (e.lengthComputable) {
  60.                                         var loaded = ((e.loaded / e.total) * 100);
  61.                                         if (loaded != 100)
  62.                                         {
  63.                                                 $("#route-import-progress").html(loaded);
  64.                                         }
  65.                                         else
  66.                                         {
  67.                                                 $("#route-import-progress").html('');
  68.                                         }
  69.                                 }
  70.                         }*/
  71.                        
  72.                         reader.onloadend = function(e)
  73.                         {
  74.                                 importStops(e.target.result);
  75.                         }
  76.                         reader.readAsText(file);
  77.                 }
  78.         }
  79.        
  80.         function importStops(text)
  81.         {
  82.                 console.log('Info', "Importing route");
  83.                 var lines = text.split("\n");
  84.                
  85.                 for (var i in lines)
  86.                 {
  87.                         var stop = lines[i].split('~');
  88.                         newStop = new Object();
  89.                         newStop.index = (parseInt(i) + 1);
  90.                         newStop.packages = stop[0];
  91.                         newStop.weight = stop[1];
  92.                         newStop.service = stop[2];
  93.                         newStop.name = stop[3];
  94.                         newStop.house = stop[4];
  95.                         newStop.street = stop[5];
  96.                         newStop.street2 = stop[6];
  97.                         newStop.city = stop[7];
  98.                         newStop.zip = stop[8];
  99.                         newStop.route = stop[9];
  100.                         addMarker(newStop);
  101.                 }
  102.         }
  103.        
  104.         function addMarker(stop)
  105.         {
  106.                 geocoder.geocode( { 'address': stop.house + " " + stop.street + " " + stop.city + " " + stop.zip }, function(results, status) {
  107.                         if (status == google.maps.GeocoderStatus.OK)
  108.                         {
  109.                                 stop.marker = new google.maps.Marker({
  110.                                         map: map,
  111.                                         position: results[0].geometry.location,
  112.                                 });
  113.                                 stop.marker.setMap(map);
  114.                         }
  115.                         else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT)
  116.                         {
  117.                                 setTimeout(function() { addMarker(stop); }, (3000));
  118.                         }
  119.                         else
  120.                         {
  121.                                 alert("Geocode was not successful for the following reason: " + status);
  122.                         }
  123.                 });
  124.         }
  125. });