Java 将位图图像舍入为google地图标记图标

Java 将位图图像舍入为google地图标记图标,java,android,google-maps,parsing,bitmap,Java,Android,Google Maps,Parsing,Bitmap,我有一个映射活动,它从解析服务器检索图像和位置 并在地图上显示为一个标记,我想知道是否可以将这些标记做成圆形而不是矩形 这是我的密码: public void getimagesLocation(){ ParseQuery<ParseObject> query = ParseQuery.getQuery("Image"); ParseGeoPoint geoPointLocation = new ParseGeoPoint(); query.whereNe

我有一个映射活动,它从解析服务器检索图像和位置 并在地图上显示为一个标记,我想知道是否可以将这些标记做成圆形而不是矩形

这是我的密码:

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 void getimagesLocation(){
ParseQuery=ParseQuery.getQuery(“图像”);
ParseGeoPoint geoPointLocation=新的ParseGeoPoint();
查询。何处(“位置”,地质点位置);
查询设置限制(100);
findInBackground(新的FindCallback(){
@凌驾
公共void done(列出对象,parsee异常){
如果(e==null){
Log.i(“imageslocation”,“无错误”);}
如果(objects.size()>0){
for(ParseObject对象:对象){
最终ParseGeoPoint点=object.getParseGeoPoint(“位置”);
ParseFile file=(ParseFile)object.get(“image”);
getDataInBackground(新的GetDataCallback(){
@凌驾
公共无效完成(字节[]数据,解析异常e){
如果(e==null&&data!=null);
位图位图=位图工厂.decodeByteArray(数据,0,数据.length);
位图缩略图=缩略图utils.extractThumbnail(位图,200200);
双纬度=点。getLatitude();
Double log=point.getLongitude();
LatLng标记=新LatLng(lat,对数);
mMap.addMarker(新标记选项()
.标题(“另一幅图像”)
.icon(BitmapDescriptorFactory.fromBitmap(缩略图))
.位置(标记);
}});}}}});}

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

我认为问题在于图像资源。您应该使用透明的*.png图像格式

像这样:


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

 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);

我不认为这与图像格式有关。这些图像是通过手机摄像头拍摄的。我只是想找到一种方法,将它们显示在一个圆圈内,使它们看起来更圆