我正在使用适用于 Android 的 Google Maps V2 并尝试创建一种方法来获取以像素为单位的图块大小以计算像素缩放级别。这是我的代码:
private int calculateZoomLevel() {
int ht, screenWidth;
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
ht = displayMetrics.heightPixels;
screenWidth = displayMetrics.widthPixels;
double equatorLength = 40075004;
double widthInPixels = screenWidth;
double metersPerPixel = equatorLength / 256;
int zoomLevel = 1;
while ((metersPerPixel * widthInPixels) > 1000) {
metersPerPixel /= 2;
++zoomLevel;
}
Log.i(TAG, "zoom level is: "+ zoomLevel);
return zoomLevel;
}
public float metersToEquatorPixels(final float meters) {
return meters / EQUATORCIRCUMFENCE * getWorldSizePx();
}
int getWorldSizePx() {
return 1 << getPixelZoomLevel();
}
int getPixelZoomLevel() {
return calculateZoomLevel() + getMapTileZoom(mTileSizePixels);
}
public static int getMapTileZoom(final int tileSizePixels) {
if (tileSizePixels <= 0) {
return 0;
}
int pixels = tileSizePixels;
int a = 0;
while (pixels != 0) {
pixels >>= 1;
a++;
}
return a - 1;
}
我在 GMaps V2 文档中看到您可以使用 Tile 类来获取 Tile 的宽度和高度,但我不确定如何获取 data[] 参数的 tile 数据。我在正确的轨道上吗?
任何建议,将不胜感激。