![](/img/trans.png)
[英]Map Marker icon animation (Google Maps API V2 for Android)
[英]Android Google Maps API v2 - how to change marker icon
我正在嘗試更改標記圖標。 我從一個服務器目錄獲取圖像。
當我每次設置斷點時,“位”結果為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);
// 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);
這很簡單:
new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.icon))
如果您想要位圖中的圖標
new MarkerOptions().icon(BitmapDescriptorFactory.fromBitmap(bitmap));
使用.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);
}
在較新版本的 Android 版 GoogleMaps 中,您無法在MarkerOptions
對象上調用.setIcon()
。 相反,您必須將標記選項添加到地圖,這將為您提供一個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)
對於 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);
在“onMapReady(GoogleMap googleMap)”里面
MarkerOptions marker = new MarkerOptions();
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable._icon));
試試這個,
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);
val marker = googleMap?.addMarker {
position(LatLng(24.774265, 46.738586))
title("Saudi Arabia")
draggable(true)
icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_address_location))
}
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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.