java - 将位图图像舍入为谷歌地图标记图标

标签 java android google-maps parsing bitmap

我有一个 map Activity ,可以从解析服务器检索图像和位置 并将它们显示为 map 上的标记,我想知道是否可以使这些标记变为圆形而不是矩形。

it looks like this now

这是我的代码:

public void getimagesLocation(){

    ParseQuery<ParseObject> query = ParseQuery.getQuery("Image");
    ParseGeoPoint geoPointLocation = new ParseGeoPoint();
    query.whereNear("location", geoPointLocation);

    query.setLimit(100);
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            if (e == null) {
                Log.i("imageslocation", "no errors");}
            if (objects.size() > 0) {
                for (ParseObject object : objects) {
                    final ParseGeoPoint point = object.getParseGeoPoint("location");
                    ParseFile file = (ParseFile) object.get("image");
                    file.getDataInBackground(new GetDataCallback() {
                        @Override
                        public void done(byte[] data, ParseException e) {
                            if (e == null && data != null);

                            Bitmap bitmap = BitmapFactory.decodeByteArray(data,0,data.length);
                            Bitmap thumbnail = ThumbnailUtils.extractThumbnail(bitmap,200,200);

                            Double lat = point.getLatitude();
                            Double log = point.getLongitude();

                            LatLng marker = new LatLng(lat, log);

                            mMap.addMarker(new MarkerOptions()
                                    .title("Another Image")
                                    .icon(BitmapDescriptorFactory.fromBitmap(thumbnail))
                                    .position(marker));

                        }});}}}});}

那么,如何使这些标记变成圆形而不是矩形?

最佳答案

好吧,我找到了一个解决方案,如果有人感兴趣的话,这就是

 public Bitmap getCroppedBitmap(Bitmap bitmap) {
    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
            bitmap.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(output);

    final int color = 0xff424242;
    final Paint paint = new Paint();
    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());

    paint.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(color);
    canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2,
            bitmap.getWidth() / 2, paint);
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
    canvas.drawBitmap(bitmap, rect, rect, paint);

    return output;
}

然后像这样简单地使用它提取缩略图

Bitmap thumbnail = ThumbnailUtils.extractThumbnail(getCroppedBitmap(bitmap),200,200);

关于java - 将位图图像舍入为谷歌地图标记图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47383183/

相关文章:

android - 从 Facebook SDK GraphUserCallback 获取出生日期和城镇/城市

javascript - Google Maps API - 调整大小会产生空白

java - 如何在没有 SDK 级别 11 的情况下创建 Android Google MapView?

java - Univocity Parser 尝试解析文件,但出现错误

java - Eclipse 需要哪些 JAR 文件才能使用 JSTL,以便最终在 GAE/J 上运行?

Android隐藏ActionBar

javascript - 使用 URL 中的 JSON 数据来显示 Google map 标记 - 怎么做?

java - 您如何处理和解析 JPA 持久性异常以向用户提供有意义的消息

java - 将记录从数组插入到 Sqlite 数据库 (Android)

当输入等于 ""时,Android EditText 处理 String.valueOf(double) 总是给出 NaN