$(document).ready(function(){ var myOptions = { center: new google.maps.LatLng(45.492751,-122.803631), zoom: 12, mapTypeId: google.maps.MapTypeId.ROADMAP }; var routeDropZone = document.getElementById('route-import'); var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); var geocoder = new google.maps.Geocoder(); routeDropZone.addEventListener("dragenter", dragEnter, false); routeDropZone.addEventListener("dragexit", dragExit, false); routeDropZone.addEventListener("dragover", dragOver, false); routeDropZone.addEventListener("drop", drop, false); function dragEnter(evt) { evt.stopPropagation(); evt.preventDefault(); } function dragExit(evt) { evt.stopPropagation(); evt.preventDefault(); } function dragOver(evt) { evt.stopPropagation(); evt.preventDefault(); } function drop(evt) { evt.stopPropagation(); evt.preventDefault(); var files = evt.dataTransfer.files; var count = files.length; // Only call the handler if 1 or more files was dropped. if (count > 0) processFiles(files); } function processFiles(files) { for(i = 0; i < files.length; i++) { file = files[i]; var reader = new FileReader(); reader.onerror = function(stuff) { console.log("error", stuff); console.log(stuff.getMessage()); } /*reader.onprogress = function(e) { if (e.lengthComputable) { var loaded = ((e.loaded / e.total) * 100); if (loaded != 100) { $("#route-import-progress").html(loaded); } else { $("#route-import-progress").html(''); } } }*/ reader.onloadend = function(e) { importStops(e.target.result); } reader.readAsText(file); } } function importStops(text) { console.log('Info', "Importing route"); var lines = text.split("\n"); for (var i in lines) { var stop = lines[i].split('~'); newStop = new Object(); newStop.index = (parseInt(i) + 1); newStop.packages = stop[0]; newStop.weight = stop[1]; newStop.service = stop[2]; newStop.name = stop[3]; newStop.house = stop[4]; newStop.street = stop[5]; newStop.street2 = stop[6]; newStop.city = stop[7]; newStop.zip = stop[8]; newStop.route = stop[9]; addMarker(newStop); } } function addMarker(stop) { geocoder.geocode( { 'address': stop.house + " " + stop.street + " " + stop.city + " " + stop.zip }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { stop.marker = new google.maps.Marker({ map: map, position: results[0].geometry.location, }); stop.marker.setMap(map); } else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) { setTimeout(function() { addMarker(stop); }, (3000)); } else { alert("Geocode was not successful for the following reason: " + status); } }); } });