我想构建一个Web应用程序,它通过ASHX处理程序从SQL Server中提取数据,转换为有效的GeoJSON格式,并在小册子地图上显示标记。我有查询从SQLServer(描述,LAT,LONG)拉三个字段。我有能力在Leaflet中显示GeoJSON数据(来自网站文档)。我无法弄清楚的是如何成功构建GeoJSON数据。有没有简单的方法来使用Javascript序列化器来构建GeoJSON对象,还是我必须在hanlder中构建的过程。ASHX将SQL数据序列化为GeoJSON格式
下面是一个例子GeoJSON的文件,我想创建:
{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": {
"name": "Placemarker 1",
"marker-color": "#0000ff",
"marker-symbol": "airport"
},
"geometry": {
"type": "Point",
"coordinates": [
-77.12911152370515,
38.79930767201779
]
}
},
{
"type": "Feature",
"properties": {
"name": "Placemarker 2",
"marker-color": "#FF0000",
"marker-symbol": "hospital"
},
"geometry": {
"type": "Point",
"coordinates": [
-7.12911152370515,
5.79930767201779
]
}
}]
}
下面是一个ASHX文件的内容,我有,目前构建一个简单的JSON文件:
private class DataSet
{
public string description { get; set; }
public double valueLat { get; set; }
public double valueLong { get; set; }
}
public void ProcessRequest(HttpContext context)
{
List<DataSet> listResults = new List<DataSet>();
int recordCount = 0;
try
{
// Get Connection String From WEB.CONFIG
string connStr = ConfigurationManager.ConnectionStrings["myConnStr"].ConnectionString;
// Connect And Get Data
OdbcConnection sqlConn = new OdbcConnection(connStr.ToString());
OdbcCommand sqlCmd = new OdbcCommand("{call getSampleData}", sqlConn);
sqlConn.Open();
OdbcDataReader rdr = sqlCmd.ExecuteReader();
while (rdr.Read())
{
DataSet results = new DataSet();
results.description = rdr["description"].ToString();
results.valueLat = Convert.ToDouble(rdr["lat"]);
results.valueLong = Convert.ToDouble(rdr["long"]);
listResults.Add(results);
recordCount++;
}
sqlConn.Close();
}
catch (OdbcException o)
{
context.Response.Write(o.Message.ToString());
}
var result = new
{
iTotalRecords = recordCount,
aaData = listResults
};
JavaScriptSerializer js = new JavaScriptSerializer();
context.Response.Write(js.Serialize(result));
}
geoJson图层是否需要保留?或者你是否打算只是为了显示在传单地图上而构建geoJson图层? – jbdev