asynchronous loading of google-maps-API

see: http://stackoverflow.com/questions/14184956/async-google-maps-api-v3-undefined-is-not-a-function/14185834#14185834

HTML

<script src="https://maps.googleapis.com/maps/api/js?v=3&amp;sensor=false"></script>
<pre></pre>
<div id="map_wrapper">
  <div id="map_canvas" class="mapping"></div>
</div>

CSS

#map_wrapper {
  height: 500px;
}

#map_canvas {
  width: 100%;
  height: 100%;
}

JavaScript

function initialize() {
      var map;
      var bounds = new google.maps.LatLngBounds();
      var mapOptions = {
        mapTypeId: 'roadmap'
      };

      // Display a map on the page
      map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

      // Multiple Markers
      var markers = [];

      // Info Window Content
      var infoWindowContent = [];

      $.get('https://dl.dropboxusercontent.com/u/97162408/crashdata.csv', function(data) {
        var data = csvToArray(data);
        data.forEach(function(item) {
          {
            markers.push([item.LGA_NAME, parseFloat(item.Lat), parseFloat(item.Long)]);

            infoWindowContent.push([item.Information]);
          }
        });

      });
      console.log(infoWindowContent);


      function csvToArray(csvString) {

        // The array we're going to build
        var csvArray = [];
        // Break it into rows to start
        var csvRows = csvString.split(/\n/);

        // Take off the first line to get the headers, then split that into an array
        var csvHeaders = csvRows.shift().split(',');

        // Loop through remaining rows
        for (var rowIndex = 0; rowIndex < csvRows.length; ++rowIndex) {
          var rowArray = csvRows[rowIndex].split(',');

          // Create a new row object to store our data.
          var rowObject = csvArray[rowIndex] = {};

          // Then iterate through the remaining properties and use the headers as keys
          for (var propIndex = 0; propIndex < rowArray.length; ++propIndex) {
            // Grab the value from the row array we're looping through...
            var propValue = rowArray[propIndex];
            // ...also grab the relevant header (the RegExp in both of these removes quotes)
            var propLabel = csvHeaders[propIndex];

            rowObject[propLabel] = propValue;
          }
        }
        return csvArray;
      }


      // Display multiple markers on a map
      var infoWindow =...