Javascript geocoding from address to latitude and longitude numbers not working

前端 未结 3 1389
故里飘歌
故里飘歌 2020-12-04 17:41

I\'m using the following geocoding function to convert a textual address into latitude and longitude numbers, but it\'s not working right. The alert writes \"undefined\".

相关标签:
3条回答
  • 2020-12-04 17:52

    Try using this instead:

    var latitude = results[0].geometry.location.lat();
    var longitude = results[0].geometry.location.lng();
    

    It's bit hard to navigate Google's api but here is the relevant documentation.

    One thing I had trouble finding was how to go in the other direction. From coordinates to an address. Here is the code I neded upp using. Please not that I also use jquery.

    $.each(results[0].address_components, function(){
        $("#CreateDialog").find('input[name="'+ this.types+'"]').attr('value', this.long_name);
    });
    

    What I'm doing is to loop through all the returned address_components and test if their types match any input element names I have in a form. And if they do I set the value of the element to the address_components value.
    If you're only interrested in the whole formated address then you can follow Google's example

    0 讨论(0)
  • 2020-12-04 18:06

    You're accessing the latitude and longitude incorrectly.

    Try

    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
    
    var geocoder = new google.maps.Geocoder();
    var address = "new york";
    
    geocoder.geocode( { 'address': address}, function(results, status) {
    
      if (status == google.maps.GeocoderStatus.OK) {
        var latitude = results[0].geometry.location.lat();
        var longitude = results[0].geometry.location.lng();
        alert(latitude);
      } 
    }); 
    </script>
    
    0 讨论(0)
  • 2020-12-04 18:18

    The script tag to the api has changed recently. Use something like this to query the Geocoding API and get the JSON object back

    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/geocode/json?address=THE_ADDRESS_YOU_WANT_TO_GEOCODE&key=YOUR_API_KEY"></script>
    

    The address could be something like

    1600+Amphitheatre+Parkway,+Mountain+View,+CA (URI Encoded; you should Google it. Very useful)

    or simply

    1600 Amphitheatre Parkway, Mountain View, CA

    By entering this address https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY inside the browser, along with my API Key, I get back a JSON object which contains the Latitude & Longitude for the city of Moutain view, CA.

    {"results" : [
      {
         "address_components" : [
            {
               "long_name" : "1600",
               "short_name" : "1600",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Amphitheatre Parkway",
               "short_name" : "Amphitheatre Pkwy",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Mountain View",
               "short_name" : "Mountain View",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Santa Clara County",
               "short_name" : "Santa Clara County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "California",
               "short_name" : "CA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "94043",
               "short_name" : "94043",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
         "geometry" : {
            "location" : {
               "lat" : 37.4222556,
               "lng" : -122.0838589
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.4236045802915,
                  "lng" : -122.0825099197085
               },
               "southwest" : {
                  "lat" : 37.4209066197085,
                  "lng" : -122.0852078802915
               }
            }
         },
         "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
         "types" : [ "street_address" ]
      }],"status" : "OK"}
    

    Web Frameworks such like AngularJS allow us to perform these queries with ease.

    0 讨论(0)
提交回复
热议问题