retrieving lat/long of location using google.maps.geocoder

前端 未结 5 641
感动是毒
感动是毒 2020-12-10 11:36

i have been trying to use some ajax to save venue location in my application and stumbled across the following code on stack overflow

function getLatLong(add         


        
相关标签:
5条回答
  • 2020-12-10 12:00

    In my case simplest solution for getting latitude and longitude from place object was:

      var latitude=place.geometry.location['k'];
      var longitude=place.geometry.location['A'];
    
    0 讨论(0)
  • 2020-12-10 12:01

    This is not the answer but don't use Pa and Qa always use the lng() and lat() functions:

     place.geometry.location
    {...}
        Pa: 56.240477
        Qa: -0.902655999999979
        toString: function(){return"("+this.lat()+", "+this.lng()+")"}
        equals: function(a){return!a?k:Cd(this.lat(),a.lat())&&Cd(this.lng(),a.lng())}
        lat: function(){return this[a]}
        lng: function(){return this[a]}
        toUrlValue: function(a){a=Hd(a)?a:6;return $d(this.lat(),a)+","+$d(this.lng(),a)}
    
    0 讨论(0)
  • 2020-12-10 12:07

    I struggled hard with this and found the following to work.

    1. Loop through the object and push into a new array:

      var newArray = [];
      
      for (var key in latLng) {
      
         newArray.push(key);
      
      }
      
    2. Call your object with variable values with the square bracket syntax, dot notation breaks:

      var lat = latLng[newArray[0]];
      
      var lng = latLng[newArray[1]];
      
    0 讨论(0)
  • 2020-12-10 12:17

    The problem you're facing is that you're treating the geocoder.geocode function as immediately completing before you do the return result. What's really happening is that the geocoder.geocode is triggered, then you get an immediate return of result. Because the asynchronous result has most likely not returned, your result is empty. Think of the geocoding result as a push, not a pull. The storeResult function, not shown, is whatever code you need to do to save the information. Because you're combining a result with an error string, you have to handle that in your storeResult function. As an alternative, you can have a status in the result that indicates succcess or failure.

    function getLatLong(address) {
    var geocoder = new google.maps.Geocoder();
    var result = "";
    geocoder.geocode( { 'address': address, 'region': 'uk' }, function(results, status) {
         if (status == google.maps.GeocoderStatus.OK) {
             result[lat] = results[0].geometry.location.Pa;
             result[lng] = results[0].geometry.location.Qa;
         } else {
             result = "Unable to find address: " + status;
         }
         storeResult(result);
        });
    }
    
    0 讨论(0)
  • 2020-12-10 12:19
    function getLatLong(address) 
    {
        var geocoder = new google.maps.Geocoder();
        var result = '';
        geocoder.geocode( { 'address': address }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                // Call the lat/lng functions to return a computed value.
                result[lat] = results[0].geometry.location.lat();
                result[lng] = results[0].geometry.location.lng();
            } else {
                result = 'Unable to find address: ' + status;
            }
        });
        return result;
    }
        
    getLatLong('address'); 
    
    0 讨论(0)
提交回复
热议问题