0

我正在使用地图视图投影来获取屏幕像素,例如

currentPixelLocation =  businessMapMv.getProjection().toPixels(tappedLocation, null);

然后我用它在屏幕上做一些操作,比如使气球尖端居中。

所以我要做的是

currentPixelLocation.y = currentPixelLocation.y - 100

这工作正常。toPixels 方法返回的像素位置是否与设备无关?

我的上述代码之类的操作是否适用于所有屏幕分辨率?

4

2 回答 2

1

我认为您网站上的设备独立像素存在误解。如果您在设备独立像素 (dip) 中声明您的布局,则框架本身会根据设备显示密度为运行时运行的设备计算正确的 Veiw 大小。在框架计算出 View 尺寸后,View 的尺寸以像素为单位设置。

因此,getProjection().toPixels() 为您提供相对于底层 MapView 的位置(以像素为单位)。这些像素与设备无关。

在我看来有什么问题是你计算currentPixelLocation.y = currentPixelLocation.y - 100100 代表什么?这 100 个绝对取决于设备。如果要减去 100 个像素,只需使用此计算即可currentPixelLocation.y = currentPixelLocation.y - 100 * getResources().getDisplayMetrics().density + 0.5f。它确保 100 个像素是计算设备 ** 依赖的。

于 2012-06-27T09:48:35.430 回答
0

它们与设备无关,但取决于为切片图层定义的切片大小。在常规地图上,默认平铺大小为 256 x 256 像素。

于 2012-06-27T09:49:36.647 回答