J'essaie de changer l'icône du marqueur . Je récupère l'image d'un répertoire du serveur.
Quand je mets un point d'arrêt à chaque fois, le résultat "bit" est null
. Et quand je lance l'application, je reçois Java.lang.NullPointerException
.
File file = new File("J:\\!!! DOCUMENTS\\!Outsourcing\\AppStore\\Benzinostancii\\Petrol\\logo.png");
Bitmap bit = BitmapFactory.decodeFile(String.valueOf(file));
double Dlat = lat.get(index);
double Dlon = lon.get(index);
String info = Arrayinfo.get(index);
String name = Arrayname.get(index);
LatLng coordinate = new LatLng(Dlat, Dlon);
map.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromBitmap(bit))
.position(coordinate)
.title(info)
).setSnippet(name);
// latitude and longitude
double latitude = 17.385044;
double longitude = 78.486671;
// create marker
MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Hello Maps");
// Changing marker icon
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.my_marker_icon)));
// adding marker
googleMap.addMarker(marker);
C'est très simple :
new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.icon))
Dans les nouvelles versions de GoogleMaps pour Android, vous ne pouvez pas appeler .setIcon()
sur un objet MarkerOptions
. Au lieu de cela, vous devez ajouter les options de marqueur sur la carte, ce qui vous donnera une Marker
sur laquelle vous pourrez ensuite changer l'icône.
Je Kotlin le code ressemblerait à ceci:
val markerOptions = MarkerOptions()
markerOptions.position(LatLng(40.419900, -111.880767))
val marker: Marker? = googleMap?.addMarker(markerOptions)
val bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_customer_symbol)
marker?.setIcon(bitmapDescriptor)
Pour les utilisateurs de Xamarin C #:
tappedMarker.Remove();
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.SetTitle(tappedMarker.Title);
markerOptions.SetPosition(tappedMarker.Position);
markerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueGreen));
tappedMarker = googleMap.AddMarker(markerOptions);
Utilisez .icon()
Ajoutez comme ceci
Marker marker = map.addMarker(new MarkerOptions().position(currentLocation)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_place_holder)));
Veuillez noter que n'utilisez pas d'images vectorielles, si vous souhaitez utiliser une utilisation vectorielle sous le code
private BitmapDescriptor bitmapDescriptorFromVector(Context context, @DrawableRes int vectorDrawableResourceId) {
Drawable background = ContextCompat.getDrawable(context, R.drawable.ic_map_pin_filled_blue_48dp);
background.setBounds(0, 0, background.getIntrinsicWidth(), background.getIntrinsicHeight());
Drawable vectorDrawable = ContextCompat.getDrawable(context, vectorDrawableResourceId);
vectorDrawable.setBounds(40, 20, vectorDrawable.getIntrinsicWidth() + 40, vectorDrawable.getIntrinsicHeight() + 20);
Bitmap bitmap = Bitmap.createBitmap(background.getIntrinsicWidth(), background.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
background.draw(canvas);
vectorDrawable.draw(canvas);
return BitmapDescriptorFactory.fromBitmap(bitmap);
}