使用JSON进行JQuery Googlemap V3地理编码

时间:2011-12-26 20:43:27

标签: jquery json google-maps-api-3 geocoding

我已经使用php实现了这个,但是我想改变它以在客户端使用JQuery 我想要做的是从Googlemaps收到JSON文件中的数据并使用它来保存我的数据库的纬度和经度,但是我甚至无法将数据转换为变量。

<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 ---------------- ---------------------

据我所知,使用上述方法无法使用Google Map的JSON,而是必须使用以下代码:

<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>

现在问题是从返回的JSON文件的.location部分获取实际的经度和纬度。 当'警报(TEST); '运行,输出如下:

(34.0868517, -117.26173289999997)

这是正确的长/纬度对,但是当我尝试输入单独的经度或纬度时,我得到以下输出:(来自警报(经度))

function () {
    return this[a];
}

任何想法?

-----------------------------------------解决----- -------------------------------

好的,这是一个简单的解决方案.. 变化:

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

为:

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

1 个答案:

答案 0 :(得分:1)

另外,我发现这个帖子可能会有所帮助: using jquery.getJson with Google's GeoCoding HTTP Service 与不提供回叫功能有关