【发布时间】:2013-09-02 17:28:06
【问题描述】:
这是我在这里的第一篇文章,所以我希望我能足够清楚地解释我的问题:
我正在扩展 FragmentActivity 类以创建 HeatMapActivity。在这个活动中,我使用了一个 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 接口来为热图叠加提供图块。
我想使用 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 对象,其他一切都可以正常工作。我没有任何线索,为什么我不应该被允许从另一个类而不是活动调用 getProjection()...
我正在使用适用于 Windows 的 ADT 包(版本 x86_64-20130729),Android SDK 版本从 8 到 17,目前在 Android 2.3.5 上进行测试。显示地图,包含所需的库,并在 android 清单中设置权限。
有什么想法吗?任何帮助或提示表示赞赏。
赛博
【问题讨论】:
标签: java android google-maps