我有一个要获取范围的Google Map,并将其发送到服务器以获取标记列表。
这是传递的一组示例参数:
neLat 60.11131083608817
neLng -74.22879847513246
swLat 47.2231665957533
swLng -157.85672816263252
为了进行健全性检查,我将它们放在这里,并且包装盒是我期望的:
http://bboxfinder.com/#47.223167,-157.856728,60.111311,-74.228798
这是我在查询中使用它们的方式:
var points = new[]
{
new Coordinate(neLng.Value, neLat.Value), // TR
new Coordinate(neLng.Value, swLat.Value), // BR
new Coordinate(swLng.Value, swLat.Value), // BL
new Coordinate(swLng.Value, neLat.Value), // TL
new Coordinate(neLng.Value, neLat.Value), // TR
};
var fact = NtsGeometryServices.Instance.CreateGeometryFactory(srid: 4326);
var poly = fact.CreatePolygon(points).Normalized().Reverse();
query = query.Where(x => x.Location.Within(poly));
这不会返回任何结果(尽管应该显示多个位置),但是如果我放大或,它会返回结果,这没有任何意义。如果我将平移框略微移开,它们也会重新出现。
标记在地图上时,它们位于正确的位置。
几乎就像SQL Server的多边形在中心向上移动一样-当我向下移动边界框时,我仍然可以看到它们仍在结果中返回。