如何阻止 Bing 地图填充图像(返回的坐标多于查询的坐标)?

How to stop Bing Maps from padding an image (returning more than the coordinates queried)?

我正在查询 Bing 地图以使用我想要返回的图像的特定坐标和特定大小的图像。然而,Bing 地图似乎填充图像以坚持宽高比或其他东西(推测)。如何获得仅显示我查询的坐标的任意大小的图像?

查询: http://dev.virtualearth.net//REST/v1/Imagery/Map/Aerial?mapArea=17.946789586870125,-76.86079673253036,18.07139741296038,-76.70156443780112&mapSize=1500,1500&key=

下面显示了此查询 returns 的图像,以及我为突出问题而绘制的矩形内的额外填充。即使我删除 'mapSize=1500,1500' 我仍然没有得到查询的确切坐标。


从下面两张图片可以看出图片的重叠,或者说多余的填充。在一张图像停止的地方,另一张图像应该开始:
图1坐标为:17.95,-76.86,17.98,-76.82。
图2坐标为:17.95, -76.82, 17.98, -76.78

这是意料之中的,因为图像将设置为 Bing 地图支持的 19 种缩放级别之一。包含边界框的图像将被 returned,但它并不总是适合夜间使用。服务中没有办法让它 return 图像紧紧围绕边界框。但是,如果图像的大小不是问题,那么它们有两个选择。一个是 trim 之后的图像,另一个是计算最适合边界框的缩放级别、中心点和地图大小。这个计算可以使用这里的一堆公式来完成:https://msdn.microsoft.com/en-us/library/bb259689.aspx

除此之外你还可以这样计算:https://rbrundritt.wordpress.com/2009/07/21/determining-best-map-view-for-an-array-of-locations/

首先,根据一组位置(边界框的角)计算最佳地图视图,并使用 Bing Maps REST Imagery 服务支持的最大图像大小。从这里您将获得缩放级别和中心点。然后,您可以使用此信息来计算边界框角的像素坐标。您可以使用它来计算图像的像素宽度和高度。使用这些尺寸、缩放级别和中心点,您可以请求一个将紧密适合您的边界框的静态图像。

我在这里为您整理了一个代码示例:https://code.msdn.microsoft.com/Retrieve-Bing-Maps-image-6a72da30