java - BitmapDescriptor 得到的百度地图 Marker 显示模糊
PHP中文网
PHP中文网 2017-04-18 09:57:17
0
2
660

我在百度地图上遇到的问题和这个 SO 问题很像,但是它的回答没有解决我的问题。

我想用自己的 res/drawable 资源来作为百度地图上的 Marker。但是这样使用后发现图片(icon_marker.png)加载出来边缘很模糊,而且即使我使用更大的图片,这个 Marker 边缘仍然是模糊的(只是被放大了)。

我已经尝试了在包括 hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi 的各个文件夹中都放这个图片的各种版本,或者只在那个没有后缀的 drawable 文件夹下放一个 png,但仍然是模糊的。大图大模糊,小图小模糊。

以下是我用百度地图显示 Marker 的代码。请问我的问题出在了哪里?

BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_marker);
LatLng latLng = ...;
OverlayOptions option = new MarkerOptions()
  .position(latLng)
  .icon(bitmap);
mBaiduMap.addOverlay(option);
PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(2)
伊谢尔伦

我透過非常非常巧合的嘗試找到了這個問題的答案。靈感來自於此:Custom map pin appears way too large and is pixelated?。

下面那位仁兄是 Top Contributor,估計是 Google 工程師了吧。他的回覆(翻譯):

谷歌地圖把所有的圖示調整到 32*32 px 的大小(有时候是两倍,64px)。
所以你应该把你的图像文件设置成 32*32 px。如果你想要一個更小的圖標,應該保留邊上的透明像素。
(如果你更改了圖標,最好使用一個新的文件名,因為原來的圖可能會留在快取里以致你看不到改變。)

我懷著對百度地圖抄襲 Google Map 深信不疑的態度嘗試了一下(因為原來我的圖片資源長寬是不等的)…

果然,設定成 32*32 px 后,图标变得清晰无比!64*64 px128*128 px 也沒問題。

大家讲道理

沒研究過 Android SDK for 百度地圖,看了下文檔,有這麼方法

public static BitmapDescriptor fromBitmap(Bitmap image)

你看能不能自己從資源創建 Bitmap 對象,指定大小,用較小的尺寸加載大圖,看會不會有改善。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板