私は現在、郵便番号をジオコーディングしてSQLデータベースに保存する方法を書いています。以下は私のコードの例です:
問題: 「json」文字列に 2 つの配列があります。ただし、ジオコーディングしようとすると、最初の配列の郵便番号のみがジオコーディングされ、2 番目の配列はジオコーディングされません。2番目の配列でも郵便番号をジオコーディングするにはどうすればよいですか。
protected void getGeoCode()
{
string json = DAO.getLatLongNull();
JObject jobject = JObject.Parse(json);
JArray array = (JArray)jobject["e"];
string postalCode = string.Empty;
string glat = string.Empty;
string glong = string.Empty;
string gPostal = string.Empty;
string sqlQuery = string.Empty;
string connectionString = DAO.GetConnectionString();
SqlConnection sqlConn = new SqlConnection(connectionString);
sqlConn.Open();
foreach (var item in array)
{
postalCode = item["postalCode"].ToString();
string url = "https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=Singapore%20";
dynamic googleResults = new Uri(url + postalCode).GetDynamicJsonObject();
foreach (var result in googleResults.results)
{
glat += result.geometry.location.lat;
glong += result.geometry.location.lng;
gPostal += item["postalCode"].ToString();
sqlQuery = "update testlatlong set lat =@lat,long =@long where postalCode =@postal";
SqlCommand command = new SqlCommand(sqlQuery, sqlConn);
command.Parameters.Add("@lat", SqlDbType.NVarChar).Value = glat;
command.Parameters.Add("@long", SqlDbType.NVarChar).Value = glong;
command.Parameters.Add("@postal", SqlDbType.NVarChar).Value = gPostal;
command.ExecuteNonQuery();
}
}
}