【问题标题】:How to parse the result returned by Google Geo Coding API in Objective C如何在Objective C中解析Google Geocoding API返回的结果
【发布时间】:2011-10-22 15:09:09
【问题描述】:

我正在开发一款 iPhone 应用程序,该应用程序需要地址中的纬度和经度。我正在使用 Google Map API 进行地理编码,但我无法解析它返回的结果。结果是 Json 格式,我想要的结果是纬度和经度。 我试图查看早期的帖子和可用的 API,但没有成功。有谁能帮帮我吗?

以下是 Google 请求返回的字符串。

  "results" : [
  {
     "address_components" : [
        {
           "long_name" : "15220",
           "short_name" : "15220",
           "types" : [ "street_number" ]
        },
        {
           "long_name" : "N Western Ave",
           "short_name" : "N Western Ave",
           "types" : [ "route" ]
        },
        {
           "long_name" : "Edmond",
           "short_name" : "Edmond",
           "types" : [ "locality", "political" ]
        },
        {
           "long_name" : "Oklahoma City",
           "short_name" : "Oklahoma City",
           "types" : [ "administrative_area_level_3", "political" ]
        },
        {
           "long_name" : "Oklahoma",
           "short_name" : "Oklahoma",
           "types" : [ "administrative_area_level_2", "political" ]
        },
        {
           "long_name" : "Oklahoma",
           "short_name" : "OK",
           "types" : [ "administrative_area_level_1", "political" ]
        },
        {
           "long_name" : "United States",
           "short_name" : "US",
           "types" : [ "country", "political" ]
        },
        {
           "long_name" : "73013",
           "short_name" : "73013",
           "types" : [ "postal_code" ]
        }
     ],
     "formatted_address" : "15220 N Western Ave, Edmond, OK 73013, USA",
     "geometry" : {
        "bounds" : {
           "northeast" : {
              "lat" : 35.6246310,
              "lng" : -97.53124129999999
           },
           "southwest" : {
              "lat" : 35.62462730,
              "lng" : -97.53126360
           }
        },
        "location" : {
           "lat" : 35.6246310,
           "lng" : -97.53124129999999
        },
        "location_type" : "RANGE_INTERPOLATED",
        "viewport" : {
           "northeast" : {
              "lat" : 35.62597813029150,
              "lng" : -97.52990346970849
           },
           "southwest" : {
              "lat" : 35.62328016970850,
              "lng" : -97.53260143029149
           }
        }
     },
     "types" : [ "street_address" ]
  }
],
"status" : "OK"
}

【问题讨论】:

    标签: iphone objective-c json geocoding


    【解决方案1】:

    使用SBJson:

    NSDictionary *partialJsonDict = [[[yourIncomingJsonAsAString JSONValue] objectForKey:@"results"]] objectAtIndex:0];
    NSDictionary *geometryDict = [partialJsonDict objectForKey:@"geometry"];
    Float32 latitude = [[[geometryDict objectForKey:@"location"] objectForKey:@"lat"] floatValue];
    Float32 latitude = [[[geometryDict objectForKey:@"location"] objectForKey:@"lng"] floatValue];
    

    是的,就是这么简单! ;)

    【讨论】:

    • 我遇到了那个库,但我对 JSON 和 iPhone 开发真的很陌生。如果你能给我更多关于这方面的信息,我将不胜感激。谢谢。
    • 谢谢。除此之外,我应该只将 SBJson.h 文件导入我的项目。对吗?
    • 哎呀...没有看到那个顶级节点保存了一个数组...更新了代码。
    • 如果你在 Github 页面上向下滚动,它会告诉你如何使用它。但是,是的,您需要做的就是将该头文件导入您想使用 SBJson 的任何位置。
    • 您需要的不仅仅是SBJson.h。按照安装说明here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多