【发布时间】:2017-04-05 12:26:37
【问题描述】:
我正在使用 .net MVC 3 和 Google Maps v3。我想在一个动作中进行地理编码。那就是将有效地址传递给 Google,然后将城市、州和国家/地区取回。您将如何在使用 C# 的操作中执行此操作?
[HttpPost]
public ActionResult getLocation(string pincode)
{
string url = "http://maps.googleapis.com/maps/api/geocode/json?
sensor=true&address=";
var data="";
dynamic googleResults = new Uri(url +
pincode).GetDynamicJsonObject();
foreach (var result in googleResults.results)
{
data= "[" + result.geometry.location.lat + "," +
result.geometry.location.lng + "] " + result.formatted_address;
}
return Json("Successful" + data, JsonRequestBehavior.AllowGet);
}
这是我从谷歌地理编码获得的 json 数据,我想从地址组件类型中读取城市、州和国家/地区行政区域级别 2、行政区域级别 1、国家/地区
{
"results" : [
{
"address_components" : [
{
"long_name" : "411022",
"short_name" : "411022",
"types" : [ "postal_code" ]
},
{
"long_name" : "SRPF",
"short_name" : "SRPF",
"types" : [ "political", "sublocality", "sublocality_level_2" ]
},
{
"long_name" : "Wanowrie",
"short_name" : "Wanowrie",
"types" : [ "political", "sublocality", "sublocality_level_1" ]
},
{
"long_name" : "Pune",
"short_name" : "Pune",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Pune",
"short_name" : "Pune",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Maharashtra",
"short_name" : "MH",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "SRPF, Wanowrie, Pune, Maharashtra 411022, India",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 18.5065017,
"lng" : 73.9128001
},
"southwest" : {
"lat" : 18.4966367,
"lng" : 73.90290019999999
}
},
"location" : {
"lat" : 18.4986371,
"lng" : 73.9074389
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 18.5065017,
"lng" : 73.9128001
},
"southwest" : {
"lat" : 18.4966367,
"lng" : 73.90290019999999
}
}
},
"place_id" : "ChIJQ1UppdzBwjsRPIND-6yqBNI",
"types" : [ "postal_code" ]
}
],
"status" : "OK"
}
【问题讨论】:
-
如果您只设置一个单数
data变量,为什么还要使用foreach?为什么要在此字符串前面添加return Json("Successful" + data,,这可能会产生无效结果? -
因为我希望这些数据以 ajax 成功方法返回
-
为什么不只是
return Json(googleResults, JsonRequestBehavior.AllowGet);?然后,您可以获取该 JSON 字符串并在客户端对其进行处理。 -
是的,我也可以这样做,但是无论我是在服务器端处理数据然后发送它还是先在客户端发送数据然后再处理它都是一样的
-
我的问题是如何分别读取城市、州和国家,而不是读取格式化地址
标签: c# json asp.net-mvc google-maps