Android Google Maps API v2 - 如何更改标记图标

cro*_*ire 30 icons android google-maps google-maps-markers

我正在尝试更改标记图标.我从一个服务器目录中获取图像.

每当"位"结果出现时我都会设置断点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);
Run Code Online (Sandbox Code Playgroud)

Tha*_*ana 77

// 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);
Run Code Online (Sandbox Code Playgroud)

更多信息

  • 你确定setIcon适用于新的谷歌apis?我不这么认为 (6认同)

Ara*_*ami 13

这很简单:

new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.icon))
Run Code Online (Sandbox Code Playgroud)

  • 这不再适用于新的谷歌地图apis (2认同)

Aab*_*ser 9

.icon() 像这样使用添加

Marker marker = map.addMarker(new MarkerOptions().position(currentLocation)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_place_holder)));
Run Code Online (Sandbox Code Playgroud)

请注意,不要使用矢量图像,如果要使用矢量,请使用以下代码

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);
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*son 8

在谷歌地图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)
Run Code Online (Sandbox Code Playgroud)