我从DbGeography数据类型收到的是位置。
{
"@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
}
]
}
我尝试了多个POSTS,但似乎都没有成功添加DbGeography Point。
有关如何做到这一点的任何想法?我尝试添加与返回的内容相同(不起作用)并使用类型+坐标作为属性(在odata标准中定义。
在另一个问题中,我发现了这个Error getting value from 'WellKnownValue' on 'System.Data.Entity.Spatial.DbGeography,但这个解决方案似乎不够。
如果我添加位置:“POINT(lat long)”我可以使用以下方法生成数据(但我不知道如何)
DbGeography.PointFromText(textValue, 4326)
答案 0 :(得分:0)
我将坐标作为经度,纬度发送,然后在服务器端转换为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();
}