NRa*_*man 53 android marker android-maps-v2
我正在使用此部分代码MapFragment在Google Map版本2中添加标记.
MarkerOptions op = new MarkerOptions();
op.position(point)
.title(Location_ArrayList.get(j).getCity_name())
.snippet(Location_ArrayList.get(j).getVenue_name())
.draggable(true);
m = map.addMarker(op);
markers.add(m);
Run Code Online (Sandbox Code Playgroud)
我想使用我的drawable中的不同图像.
Muh*_*bar 121
这就是你如何设置Drawable一个Marker.
BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.current_position_tennis_ball)
MarkerOptions markerOptions = new MarkerOptions().position(latLng)
.title("Current Location")
.snippet("Thinking of finding some thing...")
.icon(icon);
mMarker = googleMap.addMarker(markerOptions);
Run Code Online (Sandbox Code Playgroud)
VectorDrawables而XML基于Drawables不不具有这方面的工作.
vov*_*ost 73
@Lukas Novak答案没有显示任何内容,因为你还必须设置界限Drawable.
这适用于任何drawable.这是一个完整的例子:
public void drawMarker() {
Drawable circleDrawable = getResources().getDrawable(R.drawable.circle_shape);
BitmapDescriptor markerIcon = getMarkerIconFromDrawable(circleDrawable);
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(41.906991, 12.453360))
.title("My Marker")
.icon(markerIcon)
);
}
private BitmapDescriptor getMarkerIconFromDrawable(Drawable drawable) {
Canvas canvas = new Canvas();
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
drawable.draw(canvas);
return BitmapDescriptorFactory.fromBitmap(bitmap);
}
Run Code Online (Sandbox Code Playgroud)
circle_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<size android:width="20dp" android:height="20dp"/>
<solid android:color="#ff00ff"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
如果您以Drawable编程方式创建(因此您没有资源),您可以使用:
Drawable d = ... // programatically create drawable
Canvas canvas = new Canvas();
Bitmap bitmap = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);
d.draw(canvas);
BitmapDescriptor bd = BitmapDescriptorFactory.fromBitmap(bitmap);
Run Code Online (Sandbox Code Playgroud)
那么你有BitmapDescriptor,你可以传入MarkerOptions.
如果您正在使用vector drawable此扩展:
fun Context.bitmapDescriptorFromVector(vectorResId:Int): BitmapDescriptor {
val vectorDrawable = ContextCompat.getDrawable(this, vectorResId)
vectorDrawable!!.setBounds(0, 0, vectorDrawable.intrinsicWidth, vectorDrawable.intrinsicHeight)
val bitmap = Bitmap.createBitmap(vectorDrawable.intrinsicWidth, vectorDrawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
vectorDrawable.draw(Canvas(bitmap))
return BitmapDescriptorFactory.fromBitmap(bitmap)
}
Run Code Online (Sandbox Code Playgroud)
并设置为标记图标:
val markerOptions = MarkerOptions().position(latLng)
.title("Current Location")
.snippet("Thinking of finding some thing...")
.icon(bitmapDescriptorFromVector("Your icon resource id"))// call extension here
mMarker = googleMap.addMarker(markerOptions)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78235 次 |
| 最近记录: |