0

我正在使用 bing 地图,我想查询我的数据库以返回地图边界内的所有值,所以每次地图移动时,我都想再次查询它。为了提高效率,我只想查询之前没有查询过的边界。

所以我得到了前一个边界和当前边界,并想要获得前一个和当前矩形之间的非共享矩形的正方形边界(当前边界的非共享矩形)。

例如,如果我将地图向右移动 5 厘米并向上移动 2 厘米,我将收到一个 5 厘米 2 厘米矩形的新 LocationRect(未共享)。

我有地图边界:

LocationRect currentBounds = map.Bounds;

当我移动地图时,我得到一个新的界限,但在我保存以前的界限之前:

previousBounds = currentBounds;

我想获得我搬到的新位置(只有新的,而不是整个 currentBounds)。

所以我想做这样的事情:

LocationRect newMapBounds = currentBounds.NotSharedBounds(previousBounds);

但是我该如何检查呢?我看到有一个 Intersects 方法,但它返回 bool,我需要获取新的 LocationRect...

我会非常感谢帮手:)

4

1 回答 1

2

矩形方案

如果我理解正确,您有蓝色矩形(ABCD),当您移动地图时,您有红色矩形(EHGF)并且您知道它们的顶点坐标 e 所以非公共空间为您创建 3 个新矩形:绿色黄色和黑色。

您需要这 3 个矩形的坐标才能查询您的数据,换句话说,您需要对 DB 执行三个查询才能获得蓝色和红色矩形的非公共空间。

在开始计算之前,您将拥有需要处理的红色和蓝色矩形场景:

  1. 矩形是重合的。

  2. 图片中的场景

  3. 他们根本没有公共空间。

例如绿色矩形的顶点坐标是(第二种情况):

T(x) = E(x), T(y) = D(y)

F 是 RED 和 GREEN Rectangles 的共同点

N(x) = B(x) , N(y) = G(y)

F 是 BLUE 和 GREEN Rectangles 的共同点

希望能帮助到你。

于 2013-09-11T06:00:48.003 回答