2

我从 DbGeography 数据类型收到的信息位于 Location 中。

{
    "@odata.context":"http://subdomain.mydomain.me/odata/$metadata#Pois","value":[
      {
          "Id":"d57e6603-5530-4457-b041-6398b7182173","Name":"Demo Home","Address":"Zuidstraat 8 8630 Veurne","Location":{
              "Geography":{
                  "CoordinateSystemId":4326,"WellKnownText":"POINT (51.515574 2.025285)","WellKnownBinary":null
              }
          },"TagId":"ec32e8f3-c0b8-4bcc-af6c-7059b1ef1a65","RouteId":null
      }
    ]
}

我尝试了多个 POST,但似乎都没有成功添加 DbGeography 点。

关于如何做到这一点的任何想法?我尝试添加与返回的相同的内容(不起作用)并使用类型 + 坐标作为属性(如 odata 标准中定义的那样。

在另一个问题中,我发现这个Error getting value from 'WellKnownValue' on 'System.Data.Entity.Spatial.DbGeography,但这个解决方案似乎不够。

如果我要添加位置:“POINT(lat long)”,我可以使用以下方法生成数据(但我不知道如何)

DbGeography.PointFromText(textValue, 4326)
4

1 回答 1

1

我将坐标作为经度、纬度发送,然后在服务器端转换为 DbGeography,如下所示:

模型

public class MyModel
{
    [Required]
    public  double Longitude { get; set; }
    [Required]
    public double Latitude { get; set; }
}

控制器

public IHttpActionResult Post(MyModel model)
{
    if (!ModelState.IsValid || model == null)
    {
        // return error
    }

    var coordinates = DbGeography.FromText($"POINT({model.Longitude} {model.Latitude})");

    // save coordinates to database

    return Ok();
}
于 2016-03-14T07:58:14.137 回答