Как изменить значок маркера Google Maps?

Я хочу изменить выбранный значок маркера на Картах Google, поэтому у меня есть следующий код:

googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            if (null != currentMarker) {
                currentMarker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_arrowautougasen));
            }
            currentMarker = marker;
            currentMarker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_autoselektovan));              
            return true;
        }
    });

 googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
        @Override
        public void onMapClick(LatLng latLng) {
            if(null != currentMarker) {
                currentMarker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_arrowautougasen));
            }
            currentMarker = null;
        }
    });

В этой строке я получаю ошибку снизу:

       if(null != currentMarker) {
                currentMarker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_arrowautougasen));
            }

Вот исключение:

 java.lang.IllegalArgumentException: Unmanaged descriptor
                                                                    at com.google.maps.api.android.lib6.common.k.b(:com.google.android.gms.DynamiteModulesB:162)
                                                                    at com.google.maps.api.android.lib6.impl.o.c(:com.google.android.gms.DynamiteModulesB:75)
                                                                    at com.google.maps.api.android.lib6.impl.db.a(:com.google.android.gms.DynamiteModulesB:334)
                                                                    at com.google.android.gms.maps.model.internal.q.onTransact(:com.google.android.gms.DynamiteModulesB:204)
                                                                    at android.os.Binder.transact(Binder.java:387)
                                                                    at com.google.android.gms.maps.model.internal.zzf$zza$zza.zzL(Unknown Source)
                                                                    at com.google.android.gms.maps.model.Marker.setIcon(Unknown Source)
                                                                    at ba.kordinata.kogps.live.map.MapFragment$5.onMapClick(MapFragment.java:212)

person Zookey    schedule 27.04.2017    source источник
comment
Вы проверили этот ответ   -  person Kishore Jethava    schedule 27.04.2017
comment
stackoverflow.com/a/45564994/6616489 работал для моего проекта. У меня был векторный актив. поэтому преобразовал его в растровое изображение и добавил значок в качестве маркера   -  person anoo_radha    schedule 15.02.2018


Ответы (3)


Вот как я установил drawable как marker на Картах Google:

    mMap = googleMap;

    BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.your_drawable_here);
    LatLng sydney = new LatLng(-33.852, 151.211);
    MarkerOptions markerOptions = new MarkerOptions().position(sydney)
            .title("Marker in Sydney")
            .snippet("snippet snippet snippet snippet snippet...")
            .icon(icon);
    mMap.addMarker(markerOptions);
person Gilad Brunfman    schedule 27.06.2017
comment
Это создает новую иконку. ОП хочет знать, как изменить существующий маркер - person Tom; 08.06.2018

person    schedule
comment
Это создает новую иконку. ОП хочет знать, как изменить существующий маркер. - person Tom; 08.06.2018

person    schedule
comment
Это создает новую иконку. ОП хочет знать, как изменить существующий маркер. - person Tom; 08.06.2018