2014-07-18 5 views
0

내가 구글 maps.I에서 사용자 지정 마커를 만들려고하고

그래서 나는 웹 서비스 내부에 다음 코드를 사용하는 마커로 사용자 정의 레이아웃을 추가 할 매핑 :

protected void onPostExecute(Void result) { 
     View custom_layout = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_marker_layout,null); 
     ImageView iv_category_logo=(ImageView) custom_layout.findViewById(R.id.iv_category_logo); 
     pinbit=Bitmap.createScaledBitmap(pinbit,75,56,false); 
     iv_category_logo.setImageBitmap(pinbit); 
     //pinbit=MainActivity.getCroppedBitmap(pinbit, 10); 
     marker.icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(getApplicationContext(), custom_layout))); 
     // adding marker 


     googleMap.addMarker(marker); 
    } 

public static Bitmap createDrawableFromView(Context context, View view) { 
    DisplayMetrics displayMetrics = new DisplayMetrics(); 
    ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
    view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels); 
    view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels); 
    view.buildDrawingCache(); 
    Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); 

    Canvas canvas = new Canvas(bitmap); 
    view.draw(canvas); 

    return bitmap; 

그러나 ClassCastException가 다음 줄에 표시됩니다 다음 로그 캣은 다음과 같습니다

((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 

:

07-18 16:08:07.617: E/AndroidRuntime(22114): FATAL EXCEPTION: main 
07-18 16:08:07.617: E/AndroidRuntime(22114): java.lang.ClassCastException: android.app.Application 
07-18 16:08:07.617: E/AndroidRuntime(22114): at com.igloo.storelocater.MainActivity.createDrawableFromView(MainActivity.java:610) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at com.igloo.storelocater.MainActivity$retrieveimage.onPostExecute(MainActivity.java:600) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at com.igloo.storelocater.MainActivity$retrieveimage.onPostExecute(MainActivity.java:1) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at android.os.AsyncTask.finish(AsyncTask.java:417) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at android.os.AsyncTask.access$300(AsyncTask.java:127) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at android.os.Looper.loop(Looper.java:130) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at android.app.ActivityThread.main(ActivityThread.java:3689) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at java.lang.reflect.Method.invokeNative(Native Method) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at java.lang.reflect.Method.invoke(Method.java:507) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
07-18 16:08:07.617: E/AndroidRuntime(22114): at dalvik.system.NativeStart.main(Native Method) 

}

도와주세요!

답변

0

문제는 getApplicationContext() 메소드를 사용하는 데 있습니다. 일부 로컬 화면 작업을 할 때 사용하지 않는 것이 좋습니다. 이 방법은 documentation을 참조하십시오. Activity 객체를 반환하지 않습니다. IPC (Inter-Process Communication)를 사용하여 서비스와 활동간에 데이터를 전달하는 것이 좋습니다. 한 가지 가능한 방법은 here입니다. 다른 방법으로는 Developers page을 읽을 수 있습니다.

관련 문제