2017-06-13 8 views
0

Google Maps APIで使用するためにデータベースからデータを取得しようとしていますが、GeoJsonとしてフォーマットする方法がわかりません。JSONをGeoJsonとしてフォーマット

現在、のように私のコードを見て:

public IActionResult GetAll() 
{ 
    using (var connection = new SqlConnection(_config.GetConnectionString("MainDatabase"))) 
    { 
     var results = connection.Query(
      @"SELECT [Car] = car_no, 
         [Latitude] = lat, 
         [Longitude] = lng, 
         [Status] = status 

       FROM dbo.vehicles vh" 
     ); 

     return Json(results); 
    } 
} 

は、しかし、これは「プレーン」JSON形式でそれを返し、私はこのような形式で返すようにフォーマットする必要があります。

{ 
    "type": "FeatureCollection", 
    "features": [{ 
     "type": "Feature", 
     "geometry": { 
      "type": "Point", 
      "coordinates": [102.0, 0.5] 
     }, 
     "properties": { 
      "car": "15", 
      "status": "arrived" 
     } 
    }] 
} 

答えて

1

json.netを使用してクエリ結果に基づいてカスタムJSON文字列を作成することができます(Queryは、コード例でプロパティを想定したデータを返します)

var features = new JArray(); 

foreach (var result in results) 
{ 
    features.Add(new JObject(
     new JProperty("type", "Feature"), 
     new JProperty("geometry", new JObject(
      new JProperty("type", "Point"), 
      new JProperty("coordinates", new JArray(
       new JValue(result.Latitude), 
       new JValue(result.Longitude) 
      )) 
     )), 
     new JProperty("properties", new JObject(
      new JProperty("car", result.Car), 
      new JProperty("status", "arrived") 
     )) 
    )); 
} 

var jsonObject = new JObject 
    { 
     new JProperty("type", "FeatureCollection"), 
     new JProperty("features", features) 
    }; 

var json = jsonObject.ToString(); 
関連する問題