1

我有一个谷歌地图,我从中获取边界,并将其发送到服务器以获取标记列表。

这是一组传递的参数示例:

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 的多边形在中心向上移动 - 当我向下移动边界框时,我可以看到它们仍然在结果中返回。

4

0 回答 0