gpt4 book ai didi

android - 谷歌地图标记在不同设备上扩展

转载 作者:搜寻专家 更新时间:2023-11-01 08:46:24 25 4
gpt4 key购买 nike

我正在尝试在基于位置的 Android 应用程序中使用自定义图标作为标记,并在不同的设备中自行调整大小。

我有 4 个不同尺寸的(drawable-mdpi,drawable-hdpi,drawable-xhdpi,drawable-xxhdpi) 用于该图标,并放置在不同的 drawable 文件夹中。

我正在使用简单的代码来使用该图标。

Bitmap mIconBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.some_icon);

marker = map.addMarker(new MarkerOptions()
.position(pinOfferLocation)
.title("Some Title")
.icon(BitmapDescriptorFactory
.fromBitmap(mIconBitmap))
.snippet("Some Snippet").anchor(0.5f, 1));

我也尝试过使用:

BitmapDescriptorFactory.fromResources(SOME DRAWABLE RESOURCE)

我尝试的另一种选择是创建一个像这样的缩放位图:

Bitmap resized = Bitmap.createScaledBitmap(mIconBitmap, 70, 90, true);

但只有当您的应用程序在任何高密度设备上运行并且在低密度设备上会极度扩展时,上述行的问题才会出现。

我面临的问题是标记图标没有根据不同的设备自行调整大小。

有没有更好的方法在谷歌地图中针对不同的设备尺寸使用图标?

非常感谢任何帮助..谢谢

最佳答案

我想我也遇到过类似的问题。我使用了这个解决方法,即使它不是很漂亮。

我使用这种方法从 Assets 文件夹加载位图:

public static Bitmap getBitmapFromAsset(Context context, String strName,
int sampleFactor) {
AssetManager assetManager = context.getAssets();

InputStream istr;
Bitmap bitmap = null;
try {
Options opt = new Options();
opt.inSampleSize = sampleFactor; // IMPORTANT PART
istr = assetManager.open(strName);
bitmap = BitmapFactory.decodeStream(istr, null, opt);
} catch (IOException e) {
return null;
}

return bitmap;
}

可以使用类似这样的方法提取样本因子:

    DisplayMetrics metrics = new DisplayMetrics();

// not sure if this is just testing or necessary for metrics
getActivity().getWindowManager().getDefaultDisplay()
.getMetrics(metrics);

// factor (adjust in your app)
int sampleFactorDensity = Math.round(960 / metrics.densityDpi);

currPosMarker = MyTools.getBitmapFromAsset(this.getActivity(),
"marker_azure.png", sampleFactorDensity);

关于android - 谷歌地图标记在不同设备上扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829786/

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