Android Google Maps API v2 - как изменить значок значка

Я пытаюсь изменить значок маркера. Я получаю изображение из одного каталога сервера.

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

Ответы

Ответ 1

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

Больше информации

Ответ 2

Это очень просто:

new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.icon))

Ответ 3

В более новых версиях GoogleMaps для Android нельзя вызывать .setIcon() для объекта MarkerOptions. Вместо этого вы должны добавить параметры маркера на карту, которая даст вам Marker на котором вы можете изменить значок.

В Kotlin код будет выглядеть так:

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)

Ответ 4

Используйте .icon() Добавить как это

Marker marker = map.addMarker(new MarkerOptions().position(currentLocation)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_place_holder)));

Пожалуйста, обратите внимание, не используйте векторные изображения, если вы хотите использовать вектор, используйте код ниже

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

Ответ 5

Для пользователей Xamarin С#:

tappedMarker.Remove();
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.SetTitle(tappedMarker.Title);
markerOptions.SetPosition(tappedMarker.Position);

markerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueGreen));
tappedMarker = googleMap.AddMarker(markerOptions);

Ответ 6

Внутри "onMapReady (GoogleMap googleMap)"

MarkerOptions marker = new MarkerOptions();
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable._icon));

Ответ 7

      mMap = googleMap;
 LatLng sydney = new LatLng(Lat,Lng);
       mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)));
 mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney,12.0f));

Ответ 8

Попробуй это,

  BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.location);
            LatLng bangalore = new LatLng(12.9716, 77.5946);

 MarkerOptions markerOptions = new MarkerOptions().position(bangalore)
          .title("Current Location")
            .snippet("hello").icon(icon);


 mMap.addMarker(markerOptions);