gpt4 book ai didi

java - 安卓 GoogleMap getProjection() 不工作

转载 作者:太空狗 更新时间:2023-10-29 13:28:43 26 4
gpt4 key购买 nike

这是我在这里的第一篇文章,所以我希望我能足够清楚地解释我的问题:

我正在扩展 FragmentActivity 类以创建 HeatMapActivity。在此 Activity 中,我使用 GoogleMap 对象,我按如下方式获取该对象:

// Try to obtain the map from the SupportMapFragment.
map = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.heatmap)).getMap();

现在,在执行空检查等之后,我在 setUpMap() 方法中添加了一个 TileOverlay,如下所示:

// Configure and add overlay
tileProvider = new HeatMapTileProvider(map);
map.addTileOverlay(new TileOverlayOptions()
.tileProvider(tileProvider));

好的,到目前为止完全没有问题。我实现了 TileProvider接口(interface)为热图覆盖提供图 block 。

我想使用 Projection 对象将纬度/经度与屏幕上的像素相互转换。 Projection 对象应该由 GoogleMap 的 getProjection() 方法返回。类。

所以现在问题来了:如果我在 HeatMapActivity 类中使​​用以下代码,一切都很好:

System.err.println("Test1: " + map.getProjection().fromScreenLocation(new Point(50,  50)));

但是如果我将 GoogleMap 对象转发给 TileProvider,分别转发给我使用的渲染器,代码将不再有效:

public byte[] render(int x, int y, int zoom, GoogleMap map) {
...
System.err.println("Test2: " + map);
System.err.println("Test3: " + map.getProjection().fromScreenLocation(new Point(50, 50)));
...
}

我绝对知道,map 参数不为空(请参阅测试 2),但是当我调用 getProjection() 时,代码似乎被阻塞了。没有出现错误,如果我不使用 Projection 对象,其他一切都工作正常。我不知道为什么我不应该被允许从 Activity 之外的另一个类调用 getProjection()...

我正在使用适用于 Windows 的 ADT 包(版本 x86_64-20130729),Android SDK 版本从 8 到 17,目前正在 Android 2.3.5 上进行测试。显示 map ,包含所需的库并在 android list 中设置权限。

有什么想法吗?感谢任何帮助或提示。

塞布

最佳答案

这里的问题是 getTile(和您的 render 方法)是在 UI 线程之外调用的。
这将导致您不会看到的异常,因为它可能由调用 getTile 的代码静默处理。这真的很糟糕,它不会崩溃,所以有人可以在 gmaps api 问题上发布问题。
尝试在 try-catch 中包装对 getProjection 的调用以查看它。

因为你不应该在主线程之外与 GoogleMap 交互,你将不得不找到另一种方法来实现你想要实现的......

无论如何,我想不出需要在 getTile 中调用 getProjection 的充分理由。也许另一个问题描述了您的实际问题?

关于java - 安卓 GoogleMap getProjection() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578243/

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