2011-03-02 25 views
0


我已經使用的是擴展ItemizedOverlay<OverlayItem>畫一些線條我SitesOverlay類的draw()方法。現在,我還在多個不同的點上將這一張圖片添加到List<OverlayItem>中,從而將多張圖片疊加到地圖上。
現在發生的情況是,無論哪條線(使用draw()方法繪製)和圖像圖標重疊,該線都會在覆蓋圖像上繪製。
如何使覆蓋圖像位於最上方?如何使疊加顯示上述canvas.drawLine在Android的地圖API

編輯:我使用populate()將所有覆蓋圖放到地圖上,只要我將它們添加到列表中。有沒有什麼辦法我可以調用我用我的draw()方法?我試圖把填充到draw()方法,但應用程序停止工作......任何其他方式?

回答

0

好,它的數字,如果你使用的是draw方法,那麼無論你畫使用它,將在你的覆蓋面上繪製。這是因爲每當您拖動/縮放或對地圖執行任何操作時都會調用draw(),並且疊加層僅在開始處填充...所以使用draw()的繪製線總是會覆蓋疊加層..

0

我在這裏分享我的源

public void draw(Canvas canvas, MapView mapView, boolean shadow) { 
     super.draw(canvas, mapView, shadow); 
     try { 

      for (int i = 0; i < size(); i++) { 

       OverlayItem item = getItem(i); 
       String driverName = item.getSnippet(); 

       Data.activlyShownDrivers.add(driverName); 

       Point screenPts = new Point(); 
       mapView.getProjection().toPixels(item.getPoint(), screenPts); 

       Bitmap bmp = null; 
       Context ctx = ShowAll.getContext(); 
       long angle = (long) Double.parseDouble(item.getTitle()); 

       // ---add the marker--- 

        bmp = BitmapFactory.decodeResource(ctx.getResources(), 
          R.drawable.img1); 


       Paint paint = new Paint(); 
       paint.setColor(Color.BLACK); 
       paint.setStyle(Style.FILL_AND_STROKE); 

       canvas.drawBitmap(bmp, screenPts.x, screenPts.y, null); 
       canvas.drawText(driverName, screenPts.x, screenPts.y, paint); 

      } 
      // } 
     } catch (Exception e) { 
      try { 
       Log.e(Data.LOG, e.getMessage()); 
      } catch (Exception e1) { 
       e1.printStackTrace(); 
      } 
     } 

    } 
+0

ok..in ur代碼是在繪製方法中添加圖像。但我將這些圖像添加到overlayItem列表中。此列表添加到具有draw()方法作爲其方法之一的類的構造函數中......可以提供與此相關的解決方案嗎?由於要添加的疊加圖像很多,最好將它們添加到其構造函數的疊加項列表中。如果我不想將我的所有圖像從構造函數移動到我的繪製方法中,那將是非常棒的。 – Urban 2011-03-02 13:52:36

+0

可以回答並解釋你的代碼。使用draw()之前,你是否填充()你覆蓋?如果你已經有你的覆蓋物,那麼什麼是img1? PLZ需要幫助。 – Urban 2011-03-03 10:10:29

相關問題