Iは、以下のJSONを有する:移入グーグルマップ
{
"request_time": "2017-01-01T20:21:26+00:00",
"stations": [
{
"station_code": "MAT",
"atcocode": null,
"tiploc_code": "MATLOCK",
"name": "Matlock",
"mode": "train",
"longitude": -1.558911,
"latitude": 53.138406,
"distance": 221
},
{
"station_code": "MTB",
"atcocode": null,
"tiploc_code": "MATLCKB",
"name": "Matlock Bath",
"mode": "train",
"longitude": -1.556759,
"latitude": 53.122353,
"distance": 1784
}
]
}
Iは、Googleマップに局名、経度と緯度を固定しようとしています。私はエラーが発生していますが、どこにエラーがあるのか説明はありません。これはバックエンドのC#コードです。
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!ClientScript.IsStartupScriptRegistered("window"))
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "window", "CreateMarker();", true);
}
}
[WebMethod]
public MAPS[] BindMapMarker()
{
DataTable dt = new DataTable();
DataRow dr;
List<MAPS> lstMarkers = new List<MAPS>();
try
{
string json = get_web_content("https://transportapi.com/v3/uk/train/stations/near.json?app_id=03bf8009&app_key=d9307fd91b0247c607e098d5effedc97&lat=53.13838&lon=-1.5556&rpp=3");
dynamic array = JsonConvert.DeserializeObject(json);
dynamic DepartTimes = array.stations;
foreach (var item in DepartTimes)
{
//dt.Columns.Add("LocationName");
dt.Columns.Add("Location");
dt.Columns.Add("Latitude");
dt.Columns.Add("Longitude");
dr = dt.NewRow();
dr["Location"] = item["name"];
dr["Latitude"] = item["latitude"];
dr["Longitude"] = item["longitude"];
dt.Rows.Add(dr);
}
foreach (DataRow dtrow in dt.Rows)
{
MAPS objMAPS = new MAPS();
objMAPS.LocationName = dtrow[0].ToString();
objMAPS.Latitude = dtrow[0].ToString();
objMAPS.Longitude = dtrow[1].ToString();
lstMarkers.Add(objMAPS);
}
}
catch (Exception ex)
{
throw ex;
}
return lstMarkers.ToArray();
}
public class MAPS
{
public string LocationName;
public string Latitude;
public string Longitude;
}
public string get_web_content(string url)
{
Uri uri = new Uri(url);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = WebRequestMethods.Http.Get;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string output = reader.ReadToEnd();
response.Close();
return output;
}
}
ありがとう!
爆発するかもしれない1つのことは、foreachループの本体にそのコードを挿入して複数回列を作成することです。 APIからの結果を処理する前にこれらを一度追加してください。しかし、なぜそれらをDataTableに入れて、そのすぐ下のオブジェクトのコレクションにそれらを転送するのですか? – bpechkis
DataTableにJSONデータを追加する必要はありませんか?Googleマップにデータの各行を追加するには、それらをデータテーブルに入れていますか? – kieron
Googleマップにどこに追加していますか? Webメソッドの結果を処理するJavaScriptでは、そうであれば、いいえ、それらをDataTableに追加することは、不要な中間ステップです。 foreachループを使って 'DepartTimes'のデータを' MAP'オブジェクトに直接代入し、それらのリストを返してください。 – bpechkis