установить Gif изображение в качестве маркера Android - PullRequest
0 голосов
/ 30 мая 2018

Есть ли возможность установить Gif-изображение в качестве маркера для Android на карте Google. В моем проекте я хочу установить 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 голосов
/ 30 мая 2018

Вы не можете установить Gif в качестве маркера карты.

Значок маркера на картах Google Android api v2 является статическим изображением, и вы не можете изменить значок после создания маркера.Поэтому, если вы пытаетесь включить какую-либо анимацию с использованием изображений GIF, она не будет поддерживаться, и в качестве значка будет отображаться только одно изображение из GIF.

refrence: Добавить изображение GIFк маркеру 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;
    }

Надеюсь, он работает для вас.

0 голосов
/ 30 мая 2018

Из документации:

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 для маркера, потому что значок статический.И вы не можете изменить изображение во время выполнения.Однако вы можете изменить изображение с помощью кода (полностью удалив маркер на триггере событий, на таймере и т. Д. И снова добавив его с другим изображением).

...