我正在尝试制作一个连接到我的数据库的 web api,获取一些地理数据,然后返回一个网页将使用的 KML 内容(在谷歌地图 iframe/div 上显示信息)。
我正在使用sharpKML(我不知道这是否是正确的选择):
public class KmlController : ApiController
{
public HttpResponseMessage Get()
{
Point point = new Point();
point.Coordinate = new Vector(37.42052549, -122.0816695);
Placemark placemark = new Placemark();
placemark.Name = "Somewhere";
placemark.Geometry = point;
Kml kml = new Kml();
kml.Feature = placemark;
return Request.CreateResponse(HttpStatusCode.OK, kml, new XmlMediaTypeFormatter(), "application/vnd.google-earth.kml+xml");
}
}
但是当我调用http://something.on.my.lan/api/kml我得到这个异常:
System.InvalidOperationException:“ObjectContent`1”类型无法序列化内容类型“application/vnd.google-earth.kml+xml”的响应正文;字符集=utf-8'。
我错过了什么?
解决方案
不幸的是,正如在这个答案中所说,即使我设法动态创建 KML 内容,它也不会显示在地图上,因为该 URL 必须由 Google 公开访问(用于缓存目的)。我必须改变方法。