title: run javascript function before jquery function
body: <p>I'm getting the users location on a mobile device and sending it to a database, I then run a jquery function to plot pointers on a map.</p>
  
  <p>However the map always seems to load before i update the users location meaning that the location is the one that was set previously.</p>
  
  <p>getGeoLocation is the function that updates the database with the correct location, but it only ever runs after the jquery function. can't seem to get around this... how can i make the map load only after the call is made?</p>
  
  <pre><code>&lt;script&gt;
  $(document).ready(function(){
  
      getGeoLocation();
  
      alert('map');
  
      var result = JSON.parse('&lt;?php usersWithinRadius(); ?&gt;');
  
      $('#map').gmap3({
          marker:
          {                   
              values: result,
          },
          map:
          {
            options:
            {
              zoom:12,
              mapTypeControl: false,
              navigationControl: true,
              streetViewControl: false
            }
  
        }
  
      });
  
  });   
  &lt;/script&gt;
  </code></pre>
  
  <p>And this is the code that the getGeoLocation refers to:</p>
  
  <pre><code>//Initialize geolocation
  function getGeoLocation() 
  {       
  
      if(navigator.geolocation) 
      {
  
          navigator.geolocation.getCurrentPosition(
              recordGeoLocation, 
              geoLocationErrorHandler, {
                  enableHighAccuracy: true,
                  timeout: 20000,
                  maximumAge: 120000
              }
          );
  
          return true;
  
      }
      else 
      {
  
          alert('Geolocation not supported');
  
          return false;
  
      }
  
  }
  
  //Map position retrieved successfully
  function recordGeoLocation(position) 
  {
  
      var data = new Object();
  
      data.latitude = position.coords.latitude;
      data.longitude = position.coords.longitude;
  
      /** Other data
      data.altitude = position.coords.altitude;
      data.accuracy = position.coords.accuracy;
      data.altitudeAccuracy = position.coords.altitudeAccuracy;
      data.heading = position.coords.heading;
      data.speed = position.coords.speed;
      **/
  
      recordUserGeoLocation(data.latitude, data.longitude);
  
  }
  
  //Send the latitude and longitude to database
  function recordUserGeoLocation(latitude, longitude)
  {
  
      var BASE_URL = $('#BASE_URL').val();
  
      var ajaxURL = BASE_URL + 'ajax/recordUserGeoLocation/';
  
      $.ajax({
          type: 'POST',
          url: ajaxURL,
          data: { 
              latitude: latitude,
              longitude: longitude
          },
          dataType: 'json',
          success: function(data){
  
              //The record has been added
              console.log('Recorded location: ' + latitude + ' , ' + longitude);
  
              alert('Recorded location: ' + latitude + ' , ' + longitude);
  
          }
      });
  
  }
  
  //Error handler
  function geoLocationErrorHandler(err) 
  {
  
      var message;
  
      switch(err.code) 
      {
          case 0:
              message = 'Unknown error: ' + err.message;
              break;
          case 1:
              message = 'You denied permission to retrieve a position.';
              break;
          case 2:
              message = 'The browser was unable to determine a position: ' + error.message;
              break;
          case 3:
              message = 'The browser timed out before retrieving the position.';
              break;
      }
  
      alert(message);
  
  }
  </code></pre>