设置Gif Image作为标记android

时间:2018-05-30 06:41:31

标签: android maps google-maps-markers

有没有可能将Gif Image设置为标记android google map。在我的项目中我想将gif图像设置为标记

if (bmp != null) {
            System.out.println("----marker-set----------" + base64);
            marker = googleMap.addMarker(new MarkerOptions()
                    .position(new LatLng(MyCurrent_lat, MyCurrent_long))
                    .icon(BitmapDescriptorFactory.fromBitmap(bmp)));
            googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(MyCurrent_lat, MyCurrent_long),
                    17));
        }

2 个答案:

答案 0 :(得分:0)

来自文档:

https://developers.google.com/maps/documentation/android-sdk/marker

https://developers.google.com/android/reference/com/google/android/gms/maps/model/Marker

  

图标为标记显示的位图。如果图标是左图   未设置,将显示默认图标。您可以指定替代方案   使用defaultMarker(float)着色默认图标。

您无法将GIF图像用于标记,因为该图标是静态的。并且您无法在运行时更改图像。但是,您可以使用代码更改图像(通过在事件触发器,计时器等上完全删除标记并再次添加,使用不同的图像)。

答案 1 :(得分:0)

您无法将Gif设置为地图标记。

  

谷歌地图中的标记图标android api v2是静态图像,一旦创建了标记,就无法更改图标。因此,如果您尝试使用GIF图像添加任何动画,则不会支持它,并且只有来自GIF的单个图像才会显示为图标。

参考:Add GIF image to marker of Google Map Api v2

可以使用带有所需图像的自定义标记更改默认地图标记,如下所示:

使用图片持有者(ImageView)创建自定义标记布局

初始化地图标记布局

 View marker = ((LayoutInflater)getSystemService(getApplicationContext().LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_marker_layout, null);
 ImageView img = marker.findViewById(R.id.img);

imageView中的图像设置为:

if(bmp!=null)
    {
        img.setImageBitmap(bmp);
    }

将其设置为地图:

Marker customMarker = mMap.addMarker(new MarkerOptions()
        .position(new LatLng(lati, longi))
        .title(title)
        .icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(this, marker))));

其中createDrawableFromView方法,定义为:

public static Bitmap createDrawableFromView(Context context, View view)
    {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        view.setLayoutParams(new WindowManager.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT));
        view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
        view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
        view.buildDrawingCache();
        Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(bitmap);
        view.draw(canvas);

        return bitmap;
    }

希望它适合你。