如何通过javascript从json谷歌地图api中获取地理编码经度和经度?

时间:2015-03-27 10:17:51

标签: javascript json google-maps google-maps-api-3

JSON GEO位置 https://maps.googleapis.com/maps/api/geocode/json?address=KOLKATA&key=API_KEY

{
       "results" : [
          {
             "address_components" : [
                {
                   "long_name" : "Kolkata",
                   "short_name" : "Kolkata",
                   "types" : [ "locality", "political" ]
                },
                {
                   "long_name" : "Kolkata",
                   "short_name" : "Kolkata",
                   "types" : [ "administrative_area_level_2", "political" ]
                },
                {
                   "long_name" : "West Bengal",
                   "short_name" : "WB",
                   "types" : [ "administrative_area_level_1", "political" ]
                },
                {
                   "long_name" : "India",
                   "short_name" : "IN",
                   "types" : [ "country", "political" ]
                }
             ],
             "formatted_address" : "Kolkata, West Bengal, India",
             "geometry" : {
                "bounds" : {
                   "northeast" : {
                      "lat" : 23.0078201,
                      "lng" : 88.5428696
                   },
                   "southwest" : {
                      "lat" : 22.3436288,
                      "lng" : 88.19430439999999
                   }
                },
                "location" : {
                   "lat" : 22.572646,
                   "lng" : 88.36389500000001
                },
                "location_type" : "APPROXIMATE",
                "viewport" : {
                   "northeast" : {
                      "lat" : 23.0078201,
                      "lng" : 88.5428696
                   },
                   "southwest" : {
                      "lat" : 22.3436288,
                      "lng" : 88.19430439999999
                   }
                }
             },
             "place_id" : "ChIJZ_YISduC-DkRvCxsj-Yw40M",
             "types" : [ "locality", "political" ]
          }
       ],
       "status" : "OK"
    }

JS

$(function() {
    $("#home_city_select").change(function() {
        //alert( $('option:selected', this).text() );
        var city = document.getElementById("home_city_select").value;
        var ltd;
        var lng;

        var jsonLtdLng="https://maps.googleapis.com/maps/api/geocode/json?address="+city+"&key=API_KEY";
        //alert(JSON.stringify(jsonLtdLng));
        //alert($.getJSON(jsonLtdLng));
        //alert($.getJSON(jsonLtdLng.lat));
        //alert($.getJSON(jsonLtdLng.results.geometry.location.lat));
        //alert($.getJSON(jsonLtdLng.results[0].geometry.location.lat));
        //alert($.getJSON(jsonLtdLng.results[0].geometry.location.lat()));
        alert(jsonLtdLng.results[0].geometry.location.lat());
    });
});

在IBM Worklight中进行测试。

但我无法获得纬度和经度

alert(JSON.stringify(jsonLtdLng)); //返回完整地址

alert($。getJSON(jsonLtdLng)); //返回对象

alert($。getJSON(jsonLtdLng.lat)); //什么都不返回

alert($。getJSON(jsonLtdLng.results.geometry.location.lat)); //什么都不返回

alert($。getJSON(jsonLtdLng.results [0] .geometry.location.lat)); //什么都不返回

alert($。getJSON(jsonLtdLng.results [0] .geometry.location.lat())); //什么都不返回

alert(jsonLtdLng.results [0] .geometry.location.lat()); //什么都不返回

2 个答案:

答案 0 :(得分:4)

您对$.getJSON的来电不完全正确

试试这个:

$.getJSON(jsonLtdLng, function (data) {
  console.log(data.results[0].geometry.location.lat);
});

答案 1 :(得分:1)

我认为您可以使用console.log()alert()document.write(),只要信息被反序列化,我使用JSON.parse()进行反序列化,eval()是以前人们用过的东西。 反序列化意味着恢复json中编码的数据,以便Javascript可以将其用作对象。实际上,如果你使用write.document(someJson),你会看到[object object]意味着你已准备好使用所有数据,但你需要先JSON.parse()它。 JSON.stringnify()与您想要做的相反,因为该函数用于序列化数据然后传输它,然后接收器需要使用JSON.parse()对其进行反序列化在Javascript中使用它。 我喜欢使用write.document()来查看信息,但是控制台日志可以让您更轻松地查看对象内部的内容。这里有一些代码示例:

// apiData would be the variable with the API information
var externalData = JSON.parse(apiData);

// will output [object object]     
document.write(externalData);

// will output  “     “
document.write('      ');

// will output the latitude
document.write(externalData.results[0].geometry.location.lat);

// will output in the console, you need to type externalData in the console log 
console.log(externalData);

我希望这会有所帮助。