Utilizzo di ASP.NET MVC 3 con C# Ho una pagina Web per visualizzare una mappa su cui voglio aggiungere una polilinea composta da più coordinate di latitudine e longitudine. Con la libreria JavaScript Leaflet è possibile aggiungere strati GeoJson. Voglio ottenere le coordinate di longitudine e latitudine da un database in C# e passare l'elenco di coordinate al JavaScript per creare GeoJson o come GeoJson.Chiamata Ajax per ottenere dati GeoJson da ASP.NET MVC Controller
Ecco un esempio del GeoJSON desidero creare:
var polyline = {
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[-105.00341892242432, 39.75383843460583],
[-105.0008225440979, 39.751891803969535] …
]
},
"properties": {
"popupContent": "This is a polyline of many coordinates.",
"underConstruction": false
}
};
Come posso creare GeoJSON simile a quello mostrato in precedenza e aggiungere dati di localizzazione al “coordinate” sezione dal C# o JavaScript e quindi utilizzarlo in JavaScript per aggiungere un livello come ad esempio:
var myLayer = L.geoJson().addTo(map);
myLayer.addData(polyline);
ho iniziato a utilizzare GeoJSON.net e sono venuti su con questo codice:
01.235.164,106174 millionsforeach (Position point in Positions)
{
coordinates.Add(point);
}
GeoJSON.Net.Geometry.LineString line = new GeoJSON.Net.Geometry.LineString(coordinates);
JavaScriptSerializer serializer = new JavaScriptSerializer();
var data = serializer.Serialize(lineString);
Ma non so come passare questo oggetto LinseString GeoJSON dal C# al JavaScript. Non sono riuscito a passarlo con JSON in quanto tale:
return Json(data, JsonRequestBehavior.AllowGet);
Si dovrebbe provare a utilizzare il serializzatore JSON.NET invece di JavaScriptSerializer. Inoltre, se si esegue la serializzazione all'interno del controller come sopra, è necessario restituire ContentResult, poiché JsonResult esegue anche la serializzazione. Un codice aggiunto alla mia risposta qui sotto spiega come. –