我正在开发一个地图应用程序,该应用程序根据用户的查询在 MapView 上绘制图钉。我正在尝试缩放地图以适合所有结果图钉,但我遇到了一个看似奇怪的情况。
我设置了两个变量:
latSpan 是任意一个结果点的最大纬度和最小纬度之差
lonSpan 是任何结果点的最大经度和最小经度之间的差
这种方法
while ((mapView.getLatitudeSpan()) < latSpan) || (mapView.getLongitudeSpan() < lonSpan)){
mapController.zoomOut();
}//end of while loop
应该缩小以确保所有图钉都适合可查看的地图屏幕。
但我正在经历一些相当奇怪的事情。mapView.getLatitudeSpan() 和 mapView.getLongitudeSpan() 的结果通常大于我的 latSpan 和 lonSpan 值,因此 MapController 没有足够缩小。
我的地图放大得很远——15级或更高。
例如,一组搜索结果给出了以下值:
纬度 = 17928
长跨度 = 11636
mapView.getLatitudeSpan() = 21933
mapView.getLongitudeSpan() = 20598
根据这些数字,您不会认为 MapController 需要缩小。然而,在屏幕顶部上方和底部下方都绘制了图钉。我将我的 WHILE 循环更改为阅读
while ((mapView.getLatitudeSpan() - 6000) < latSpan...
这会有所帮助,但正确的查询仍然会导致问题。
但真正的问题是,为什么会发生这种情况?