4

提示:这是一篇类似的HTML 帖子。

在我的应用程序的当前平板电脑实现中,我有一个全屏 MapView,其中一些信息显示在左侧面板的 RelativeLayout 中,如下所示:

(我的布局很琐碎,为了可读性我想没有必要发布它)

在此处输入图像描述

当我想将地图集中在特定点上时,问题就来了......如果我使用这段代码:

mapController.setCenter(point);

我当然会在屏幕中心而不是在空白区域的中心获得点。

我真的不知道我可以从哪里开始将左面板的偏移量转换为地图坐标......

非常感谢任何帮助或建议

4

1 回答 1

3

top-left您可以通过从和角获取地图坐标bottom-right并将其除以屏幕尺寸来实现您的目标,以获得每个像素的值。

然后你只需要乘以偏移量并将其添加到原始中心。

示例代码:

private void centerMap(GeoPoint center, int offX, int offY){
    GeoPoint tl = mapView.getProjection().fromPixels(0, 0);
    GeoPoint br = mapView.getProjection().fromPixels(mapView.getWidth(), mapView.getHeight());

    int newLon = offX * (br.getLongitudeE6() - tl.getLongitudeE6()) / mapView.getWidth() + center.getLongitudeE6(); 
    int newLat = offY * (br.getLatitudeE6() - tl.getLatitudeE6()) / mapView.getHeight() + center.getLatitudeE6();

    mapController.setCenter(new GeoPoint(newLat, newLon));

}

要使用,您可以使用原始中心和两个偏移量(x 和 Y)调用上述方法以应用。

Note:如所写,上面的代码向左移动正偏移值,向右移动负偏移值。在您问题的屏幕上,您将需要使用负偏移量,向左移动地图,以及 Y 的零偏移量。

问候

于 2012-11-11T21:02:01.043 回答