JQuery Googlemap V3 Геокодирование с помощью JSON - PullRequest
1 голос
/ 27 декабря 2011

Я реализовал это с помощью php, но я хотел изменить его на использование JQuery на стороне клиента.
Я пытаюсь получить данные из файла JSON, полученные из Googlemaps, и использовать их для сохранения широты и долготы в моей базе данных, однако я не смог даже получить данные в переменные.

<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>


<script type="text/javascript">

$(document).ready(function() 
{
    $("#test").append('STUFF HERE');

    var geocodeURL = 'http://maps.google.com/maps/api/geocode/json?address=92408&sensor=false';

    $.getJSON(geocodeURL, function(data){

            var latitude = data.results.geometry.location.lat;
            var longitude = data.results.geometry.location.lng;

            alert(longitude);

            $("#test").append('<p>'+latitude +'</p><p>'+longitude+'</p>');

    });

});

</script>

<div id="test" ></div>

Когда я вставляю GeocodeURL в браузер, я получаю следующее возвращение:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "92408",
               "short_name" : "92408",
               "types" : [ "postal_code" ]
            },
            {
               "long_name" : "San Bernardino",
               "short_name" : "San Bernardino",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "San Bernardino",
               "short_name" : "San Bernardino",
               "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" ]
            }
         ],
         "formatted_address" : "San Bernardino, CA 92408, USA",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 34.10665490,
                  "lng" : -117.208780
               },
               "southwest" : {
                  "lat" : 34.0501660,
                  "lng" : -117.3071210
               }
            },
            "location" : {
               "lat" : 34.08685170,
               "lng" : -117.26173290
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 34.10665490,
                  "lng" : -117.208780
               },
               "southwest" : {
                  "lat" : 34.0501660,
                  "lng" : -117.3071210
               }
            }
         },
         "types" : [ "postal_code" ]
      }
   ],
   "status" : "OK"
}

После одного или двух дней или исследования и настройки я не смог выяснить, в чем дело, и я надеюсь, что это простой вопрос для человека, который уже был там и сделал это, потому что я был застрял ..

------------------------------ UPDATE ---------------- ---------------------

Итак, насколько я могу судить, нет способа сделать JSON Google Map с помощью вышеуказанного метода, и вместо этого вы должны использовать следующий код:

<script type="text/javascript"

    src="http://maps.googleapis.com/maps/api/js?sensor=true">

</script>


<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>


<script type="text/javascript">

$(document).ready(function() 
{
    var geocoder = new google.maps.Geocoder();
    var address= '92408';

    geocoder.geocode({ 'address': address}, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) 
        {
            var TEST = results[0].geometry.location;
            var longitude = results[0].geometry.location.lng;
            alert(TEST);
            alert(longitude);
            } 
        else 
        {
                result = "Unable to find address: " + status;
            }
    });


});

</script>

<div id="test" ></div>

Теперь проблема заключается в получении фактической широты и долготы из части .location возвращаемого файла JSON. Когда «оповещение (ТЕСТ); ', выводится следующее:

(34.0868517, -117.26173289999997)

Это правильная пара long / lat, но когда я пытаюсь указать индивидуальную долготу или широту, я получаю следующий вывод: (из alert (longitude))

function () {
    return this[a];
}

Есть идеи у кого-нибудь?

----------------------------------------- решаемые ----- -------------------------------

Хорошо, это было простое решение .. Изменение:

var longitude = results[0].geometry.location.lng;

до:

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

1 Ответ

1 голос
/ 27 декабря 2011

Кроме того, я нашел эту ветку, которая может помочь: использование jquery.getJson с Google GeoCoding HTTP Service Связано с отсутствием функции обратного вызова

...