How can I get the best level of detail for a given extent when retrieving tiles from a Bing Maps Tile server
我目前正在处理一些地图内容,我计划使用 Bing Maps Tile 服务器来检索将"缝合"在一起的图块,形成给定范围的更大地图(我不想使用Bing Maps API 是有原因的)。
我正在熟悉瓷砖逻辑和定义它们的 quadKeys(感谢这篇文章),除了一个问题外,一切都很好:我很难找到一种聪明的方法来弄清楚如何获得包含给定范围的详细信息,并且在此 LoD 上检索到的图块将适合所需的图像大小。
稍微详细一点的解释:
假设我需要在 800x600 位图图像上显示 Hungay 地图。
定义包含匈牙利的矩形的左上角和右下角的范围是(大致): 48.593, 16.145 ; 45.923, 23.396.
通过上述文章的数学计算,我可以找到包含整个匈牙利的图块。通过一点点裁剪,我可以从一个瓷砖中获得所需的范围。但这会给我一个尺寸小于 250x250 的位图,这在我想要的 800x600 图像尺寸上看起来很糟糕。当然,我可以递归地钻取子图块,检查它们的组合大小是否适合 800x600 矩形。但是这种方法对我来说似乎非常具有启发性,我想找到一种方法来计算所需的详细程度。
基本上,我需要类似于 VEMap.SetMapView 方法的东西,您可以在其中传递一组位置,地图会找到适合您视口中所有位置的最佳缩放。 (在我的情况下,位置将是边界框的左上角/右下角点)。
我发现了一篇类似的文章,但那里描述的方法对于更大的图像尺寸似乎表现得很奇怪。
我希望我设法解释了我的问题。非常感谢任何帮助和建议。
首先,直接访问 Bing 地图的图块违反使用条款,不应这样做。此外,如果您这样做,您的代码将会中断,因为磁贴 url 会定期更改以防止直接访问。
对于您正在尝试做的事情,Bing 地图 REST 服务最有意义。它完全符合您的要求。您可以在此处找到相关文档:http://msdn.microsoft.com/en-us/library/ff701721.aspx