2013-07-16 27 views
2

我想旋轉一個帶有的drawable一個xml文件,然後在地圖上顯示它。通過XML旋轉drawable不能在GoogleMap V2上使用標記

我喜歡。

//...// 
mo1.position(myLatLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.myxmldrawable)); 
map.addMarker(mo1); 
//...// 

XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
     android:fromDegrees="180" 
     android:toDegrees="180" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:drawable="@drawable/pin"/> 

如果我跑的代碼以下異常捕獲:

07-16 13:10:18.347: W/System.err(26084): java.lang.NullPointerException 
07-16 13:10:18.347: W/System.err(26084): at maps.ah.bm.a(Unknown Source) 
07-16 13:10:18.347: W/System.err(26084): at maps.ah.bm.a(Unknown Source) 
07-16 13:10:18.347: W/System.err(26084): at maps.ah.an.a(Unknown Source) 
07-16 13:10:18.347: W/System.err(26084): at bgc.onTransact(SourceFile:167) 
07-16 13:10:18.347: W/System.err(26084): at android.os.Binder.transact(Binder.java:326) 
07-16 13:10:18.347: W/System.err(26084): at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a.addMarker(Unknown Source) 
07-16 13:10:18.347: W/System.err(26084): at com.google.android.gms.maps.GoogleMap.addMarker(Unknown Source) 
07-16 13:10:18.347: W/System.err(26084): at hu.illion.ayt.activities.MapAct$GetBolyakAsync.onPostExecute(MapAct.java:1177) 
07-16 13:10:18.347: W/System.err(26084): at hu.illion.ayt.activities.MapAct$GetBolyakAsync.onPostExecute(MapAct.java:1) 
07-16 13:10:18.347: W/System.err(26084): at android.os.AsyncTask.finish(AsyncTask.java:631) 
07-16 13:10:18.347: W/System.err(26084): at android.os.AsyncTask.access$600(AsyncTask.java:177) 
07-16 13:10:18.347: W/System.err(26084): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
07-16 13:10:18.357: W/System.err(26084): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-16 13:10:18.357: W/System.err(26084): at android.os.Looper.loop(Looper.java:137) 
07-16 13:10:18.357: W/System.err(26084): at android.app.ActivityThread.main(ActivityThread.java:4867) 
07-16 13:10:18.357: W/System.err(26084): at java.lang.reflect.Method.invokeNative(Native Method) 
07-16 13:10:18.357: W/System.err(26084): at java.lang.reflect.Method.invoke(Method.java:511) 
07-16 13:10:18.357: W/System.err(26084): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007) 
07-16 13:10:18.357: W/System.err(26084): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774) 
07-16 13:10:18.357: W/System.err(26084): at dalvik.system.NativeStart.main(Native Method) 

的錯誤時拋出點的地方,我想補充線標記到地圖。

重要:我已成功與.png drawables。我有xml定義的繪圖只有問題(旋轉...)

那麼這是什麼? GoogleMap無法處理XML可繪製或什麼?

Ëd I T:

好了,所以之後我嘗試了建議,並認爲這是不工作,(仍然有nullptr除外),我只是說我到底要記錄哪些出來的一切。

結果對我來說很奇怪。

logcat的結果:

07-17 22:11:11.410: I/myResource(22971): myResource is: 2130837627 
07-17 22:11:11.410: I/myBitmapDescriptor(22971): myBitmapDescriptor is: [email protected] 
07-17 22:11:11.410: I/myLatLng(22971): myLatLng is OK 
07-17 22:11:11.410: I/myMarker(22971): myMarker is OK 
07-17 22:11:11.410: I/myMarker(22971): myMarker is still OK 
07-17 22:11:11.410: I/map(22971): map is OK 

看到了嗎?一切都有參考。無爲NULL,但NullPointerException仍然存在。 和代碼是:

MarkerOptions myMarker = new MarkerOptions(); 


         LatLng myLatLng = new LatLng(Double.valueOf(myHashMap.get("lat2")), Double.valueOf(myHashMap.get("lng2"))); 

         if (myHashMap.get("point_type").equals("1")) { 

          Bitmap icon = BitmapFactory.decodeResource(MapAct.this.getResources(), R.drawable.ellenfel); 

          mo1.position(kezdoLatLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.startbolya)); 
          myMarker.position(myLatLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.zsuri0)); 
         } else { 
          mo1.position(kezdoLatLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.endbolya)); 

          int myResource = getResources().getIdentifier("zsuri180","drawable", getPackageName()); 

          if(myResource==0) 
          { 
           Log.i("myResource", "myResource is null"); 
          } 
          else 
          { 
           Log.i("myResource", "myResource is: "+myResource+""); 
          } 

          BitmapDescriptor myBitmapDescriptor = BitmapDescriptorFactory.fromResource(myResource); 

          if(myBitmapDescriptor==null) 
          { 

           Log.i("myBitmapDescriptor", "myBitmapDescriptor is null"); 
          } 
          else 
          { 
           Log.i("myBitmapDescriptor", "myBitmapDescriptor is: "+myBitmapDescriptor); 
          } 


          if(myLatLng==null) 
          { 
           Log.i("myLatLng", "myLatLng is NULL"); 
          } 
          else 
          { 
           Log.i("myLatLng", "myLatLng is OK"); 
          } 

          myMarker.position(myLatLng); 

          if(myMarker==null) 
          { 
           Log.i("myMarker", "myMarker is NULL"); 
          } 
          else 
          { 
           Log.i("myMarker", "myMarker is OK"); 
          } 


          myMarker.icon(myBitmapDescriptor); 


          if(myMarker==null) 
          { 
           Log.i("myMarker", "myMarker is NULL"); 
          } 
          else 
          { 
           Log.i("myMarker", "myMarker is still OK"); 
          } 

          if(map==null) 
          { 
           Log.i("map", "map is NULL"); 
          } 
          else 
          { 
           Log.i("map", "map is OK"); 
          } 


         } 

         map.addMarker(myMarker); 

回答

0

好這個問題在我看來,這樣的(我認爲):

你具有.icon(BitmapDescriptorFactory.fromResource(R.drawable.myxmldrawable)一個問題,因爲 僅R.drawable屬於文件在可繪製文件夾內。

獲取資源使用這樣的:

getResources().getIdentifier(myxmldrawable,"drawable", getPackageName()) 上面使用的myxmldrawable分配變量的XML圖標屬性 使用它來獲取動態的圖標:

.icon(BitmapDescriptorFactory .fromResource(getResources().getIdentifier(icon,"drawable", getPackageName()))

這應該做它爲雅。

乾杯:)

+0

那麼,它在其他地方工作,但不是在地圖上:( –

+0

至少你不應該收到'NullPointerException' - 對嗎?如果是這樣,那麼請粘貼從現在開始的錯誤謝謝 – g00dy

+0

我得到了同樣的錯誤。NullPointerEx。 –

3

不能使用非PNG資源作爲Marker的圖標。

你可以這樣Drawable但加載到內存中,使用Canvas它畫成一個Bitmap和發送使用BitmapDescriptorFactory.fromBitmap(...)BitmapMarkerOptions.icon

+0

不幸的是,這是正確的答案。它很可能與XML drawable沒有內置維度有關。 –

+0

@Jarett更可能是'Bitmap'必須是通過IPC發送到Google Play服務。 –

相關問題