2017-04-27 4 views
1

Ich möchte auf Google Maps ausgewählt Markierungssymbol ändern, so habe ich folgenden Code:Wie kann ich das Google Maps-Markersymbol ändern?

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

Auf dieser Linie I-Fehler erhalten von unten:

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

ist hier die Ausnahme:

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) 
+0

Haben Sie diese [Antwort] geprüft (http://stackoverflow.com/questions/41902478/illegalargumentexception-unmanaged-descriptor-using-gms -Maps-Model-Marker-Setic) –

+0

https://Stackoverflow.com/a/45564994/6616489 arbeitete für mein Projekt. Ich hatte einen Vektor-Asset. also, wandelte es in Bitmap um und fügte das Symbol als Markierung hinzu –

Antwort

0
double latitude = 12.5044; 
double longitude = 60.6671; 
MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("MyMaps"); 
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.my_icon))); 
googleMap.addMarker(marker); 
0
public void onLocationChanged(Location location) { 
     mLastLocation = location; 
     if (currentLocationMarker != null) { 
      currentLocationMarker.remove(); 
     } 

     Log.d(Constant.TAG, "Location Changed"); 

     // resize bitmap 
     //BitmapFactory.Options options = new BitmapFactory.Options(); 
     //options.inScaled = false; 
     //currentBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.currentpos, options); 
     //currentBitmap = SubUtils.scaleBitmap(currentBitmap, 60, 60); 

     //Place current location marker 
     LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 
     //create marker 
     MarkerOptions markerOptions = new MarkerOptions(); 
     //add position to marker 
     markerOptions.position(latLng); 
     //change icon marker 
     markerOptions.icon(BitmapDescriptorFactory.fromBitmap(currentBitmap)); 
     //add marker to googleMap 
     currentLocationMarker = googleMap.addMarker(markerOptions); 

     // animate targer marker 
     CameraPosition cameraPosition = new CameraPosition.Builder() 
       .target(latLng) 
       .zoom(15) 
       .build(); 
     //move the map to selected marker 
     googleMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 
    } 
3

Dies ist, wie ich ein drawable als auf Google Maps setzen:

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