4

指定された住所から通りの名前、郵便番号、都市、州、国、緯度、経度を引き出す必要があります

インドの住所では正常に機能しており、オーストラリアの住所を試したところ、通りの名前と郵便番号を取得できません。JSON配列にある住所コンポーネントから制約を取得する際に、残りのものは問題ありません

Google開発者フォーラムで参照されている次のコードを使用しました

public void FrmGoogleGeoCode(string frmAddress)
{
        string addUrl = "http://maps.google.com/maps/api/geocode/json?address='" + frmAddress + "'&sensor=false";
      var result = new System.Net.WebClient().DownloadString(addUrl);
      GoogleGeoCodeResponse test = JsonConvert.DeserializeObject<GoogleGeoCodeResponse>(result);
      var response = test.results.First();  
}

var の結果では、住所コンポーネントの JSON 配列と住所コンポーネントから書式設定された住所を取得しています。オーストラリアの住所から通りの名前、都市、州、郵便番号、国を取得する必要がありました。

この問題のブロックを解除してください

前もって感謝します

4

1 に答える 1

1

ご回答ありがとうございます。同じ住所、つまり 300 George Street, Sydney NSW 2000, Australia を試しましたが、住所に要素が含まれていません。

frmAddress ="300 George Street, Sydney NSW 2000, Australia";

これは、通りの名前、都市、郊外、国、郵便番号を取得するための次のコードでした

        string addUrl = "http://maps.google.com/maps/api/geocode/json?address='" + frmAddress + "'&sensor=false";
      var result = new System.Net.WebClient().DownloadString(addUrl);
      GoogleGeoCodeResponse test = JsonConvert.DeserializeObject<GoogleGeoCodeResponse>(result);
      var response = test.results.First();
      string route=null;
      string locality=null;
      string pstlCode = null;
      for (int i = 0; i < response.address_components.Count(); i++)
      {
          int j = 0;
          var components = response.address_components[i];
          string type = components.types[j].ToString();
          if (type == "route")
          {
              route = response.address_components[i].long_name.ToString();

          }
          if (type == "locality")
          {
           locality = response.address_components[i].long_name.ToString();
          }
          if (type == "postal_code")
          {
           pstlCode = response.address_components[i].long_name.ToString();
          }
      }
      frmLocation = route +","+locality +","+ pstlCode;

次に、このコードを使用して、オーストラリア、シドニー、ニューサウスウェールズ州、2000 年のジョージ ストリートを試してみました。

以下の回答でした。コードを投稿していただければ助かります。

{ "results" : [ {"address_components" : [
            {
               "long_name" : "George Street",
               "short_name" : "George Street",
               "types" : [ "colloquial_area", "political" ]
            },
            {
               "long_name" : "New South Wales",
               "short_name" : "NSW",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Australia",
               "short_name" : "AU",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "George Street, NSW, Australia",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : -33.9134399,
                  "lng" : 151.1667177
               },
               "southwest" : {
                  "lat" : -34.0059442,
                  "lng" : 151.0332033
               }
            },
            "location" : {
               "lat" : -33.9547504,
               "lng" : 151.1053691
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : -33.9134399,
                  "lng" : 151.1667177
               },
               "southwest" : {
                  "lat" : -34.0059442,
                  "lng" : 151.0332033
               }
            }
         },
         "partial_match" : true,
         "types" : [ "colloquial_area", "political" ]
      }
   ],
   "status" : "OK"
}
于 2013-08-19T06:20:33.273 に答える