gpt4 book ai didi

Android: MapView.GetLatitudeSpan(), GetLongitudeSpan()异常?

转载 作者:行者123 更新时间:2023-11-29 02:05:13 24 4
gpt4 key购买 nike

我正在开发一个 map 应用程序,它根据用户的查询在 MapView 上绘制图钉。我正在尝试缩放 map 以适合所有结果图钉,但我遇到了一个看似奇怪的情况。

我设置了两个变量:

latSpan 是任何结果点的最大纬度和最小纬度之间的差值

lonSpan 是任何结果点的最大经度和最小经度之间的差值

这个方法

        while ((mapView.getLatitudeSpan()) < latSpan) || (mapView.getLongitudeSpan() < lonSpan)){
mapController.zoomOut();
}//end of while loop

应该缩小以确保所有图钉都适合可查看的 map 屏幕。

但我遇到了一些相当奇怪的事情。 mapView.getLatitudeSpan() 和 mapView.getLongitudeSpan() 的结果通常大于我的 latSpan 和 lonSpan 值,因此 MapController 的缩小不够。

我的 map 放大得很远——15 级或更高。

例如,一组搜索结果给出了以下值:

经纬度 = 17928

lonSpan = 11636

mapView.getLatitudeSpan() = 21933

mapView.getLongitudeSpan() = 20598

根据这些数字,您不会认为 MapController 需要缩小。然而,在屏幕顶部和底部下方都绘制了图钉。我将 WHILE 循环更改为读取

while ((mapView.getLatitudeSpan() - 6000) < latSpan...

这会有所帮助,但正确的查询仍然会导致问题。

但真正的问题是,为什么会这样?

最佳答案

我不确定为什么您的代码无法从提供的代码段中运行。您可能没有将 latSpan 和 lonSpan 转换为 microDegrees(如下所示),这会导致一些问题。

此外,如果您试图确保您的 mapView 显示所有结果,则在缩放之前尝试确定是否需要缩放没有多大意义,只需每次缩放即可。如果事实证明它不需要缩放,那么似乎什么也不会发生,如果需要,那么它就会发生。

您可以设置一个 map 以包含所有点并移动到点的质心,如下所示:

GeoPoint max = new GeoPoint(maxLatitude, maxLongitude);
GeoPoint min = new GeoPoint(minLatitude, minLongitude);

int maxLatMicro = max.getLatitudeE6();
int maxLonMicro = max.getLongitudeE6();
int minLatMicro = min.getLatitudeE6();
int minLonMicro = min.getLongitudeE6();

GeoPoint center = new GeoPoint((maxLatMicro+minLatMicro)/2,(maxLonMicro + minLonMicro)/2);

controller.zoomToSpan(maxLatMicro - minLatMicro, maxLonMicro - minLonMicro);
controller.animateTo(center);

关于Android: MapView.GetLatitudeSpan(), GetLongitudeSpan()异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10458575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com