1
런타임에 계산 된 Google지도 아이콘 마커가 필요합니다. 이를 위해 View에서 파생 된 클래스를 만들었습니다.Google지도 용 사용자 정의보기를 비트 맵으로 변환하는 방법 마커 아이콘
class DrawView extends View {
Paint p;
RectF rectf;
String textLabel;
public DrawView(Context context, String text) {
super(context);
p = new Paint();
rectf = new RectF(100,100,300,150);
this.textLabel=text;
}
@Override
protected void onDraw(Canvas canvas) {
p.setColor(Color.RED);
p.setStrokeWidth(10);
canvas.drawRoundRect(rectf, 20, 20, p);
//another draw will be here...
}
}
보기 변환
View view =new DrawView(this,"Some text");
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap=loadBitmapFromView(view);
Marker marker=mMap.addMarker(new MarkerOptions().position(new LatLng(s.lat,s.lng)).icon(BitmapDescriptorFactory.fromBitmap(bitmap)));
NPE가
FATAL EXCEPTION: main
java.lang.NullPointerException
at ru.ch2.activity.CheckInActivity.loadBitmapFromView(CheckInActivity.java:439)
at ru.ch2.activity.CheckInActivity.onMapReady(CheckInActivity.java:254)
at com.google.android.gms.maps.SupportMapFragment$zza$1.zza(Unknown Source)
at com.google.android.gms.maps.internal.zzo$zza.onTransact(Unknown Source)
at android.os.Binder.transact(Binder.java:347)
at xk.a(:com.google.android.gms.DynamiteModulesB:82)
at maps.af.t$5.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
발생 마커 추가
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
v.draw(c);
return b;
}
비트 맵 라인에 loadBitmapFromView에서 1,515,
v.layout (v.getLeft() v.getTop() v.getRight() v.getBottom()); 이 기능을 사용
당신의'보기 v'가 null을 얻기 위해 계산한다. 메서드에 인수로 null을 전달합니다. –
가능한 [NullPointerException이란 무엇이며 어떻게 수정합니까?] (http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it)) –
당신이 제공해야하는 것은'Bitmap' (또는 더 나은'BitmapDescriptor')입니다. 그걸보기 위해'View'를 확장하지 않아도됩니다. – pskink