2014-10-07 91 views
1

我是新手,我正在開發一個跟蹤員工位置並在地圖上顯示他們的android應用程序。這幾乎完成了,只是它不顯示員工在標記上的圖像。刷新google地圖上的標記以查看Android中的標記圖像

我能夠在網上下載圖像並在標記上設置圖像。但問題是,它不會自動顯示。我需要再次繪製座標才能顯示圖像。下面是我用來下載和設置上的標記的圖像的代碼...

private class DownloadEmployeeImage extends AsyncTask<String, Void, Bitmap> { 

    ImageView image; 

    public DownloadEmployeeImage(ImageView bmImage) { 

     this.image = bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 

     String url = urls[0]; 
     Bitmap bmpImg = null; 

     try { 

      InputStream in = new java.net.URL(url).openStream(); 
      bmpImg = BitmapFactory.decodeStream(in); 

     } catch (Exception e) { 

      Log.e("Failed to download image: ", e.toString()); 
     }   

     return bmpImg; 
    } 

    protected void onPostExecute(Bitmap bmpImg) { 

     try { 

      image.setImageBitmap(RoundedImageView.getCroppedBitmap(bmpImg, 200));        

     } catch(Exception e) { 

      image.setImageBitmap(RoundedImageView.getCroppedBitmap(BitmapFactory 
        .decodeResource(MainActivity.this.getResources(), R.drawable.ic_user_placeholder), 200));    
     } 
    } 
} 

下載和標誌設置的圖像後,我添加了標記在地圖上

View viewLocationMarker = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.layout_location_marker, null); 
    ImageView ivPictureLocationMarker = (ImageView) viewLocationMarker.findViewById(R.id.ivPictureLocationMarker); 

    new DownloadEmployeeImage(ivPictureLocationMarker).execute(TheURLOfTheImage);  

    Marker locationMarker = googleMap.addMarker(new MarkerOptions() 
    .position(new LatLng(latitude, longitude)).title(name).anchor(0.33f, 1) 
    .icon(BitmapDescriptorFactory.fromBitmap(TarkieManagerLib 
      .createDrawableFromView(MainActivity.this, viewLocationMarker)))); 

任何我該如何做到這一點的絕妙主意?

回答

1

那麼好吧,我認爲問題是在這裏在下面的代碼

新DownloadEmployeeImage(ivPictureLocationMarker)。執行(TheURLOfTheImage);

Marker locationMarker = googleMap.addMarker(new MarkerOptions() 
.position(new LatLng(latitude, longitude)).title(name).anchor(0.33f, 1) 
.icon(BitmapDescriptorFactory.fromBitmap(TarkieManagerLib 
     .createDrawableFromView(MainActivity.this, viewLocationMarker)))); 
在此代碼

你下載圖像(電話asynktask)和順序標記,但實際上在這兩個並行工作流程設置圖像。你的問題是如何?我會詳細解釋。 看到您何時調用Asynctask,那麼它在後端工作,並執行下面的代碼。所以在這裏你打電話負載圖像,並將其加載系統中只設置這種情況下,標記 在OnPostexecute marker.so設置(...){

Marker locationMarker = googleMap.addMarker(new MarkerOptions() 
.position(new LatLng(latitude, longitude)).title(name).anchor(0.33f, 1) 
.icon(BitmapDescriptorFactory.fromBitmap(TarkieManagerLib 
     .createDrawableFromView(MainActivity.this, viewLocationMarker)))); 

這裏之前還設置標記在地圖上....

} 多數民衆贊成它...

+0

不錯!它的作用就像一種魅力。謝謝! – mgcaguioa 2014-10-07 11:14:13

0

你必須使用自定義標記用於顯示該鏈路上的marker.Follow圖像:

Google Maps Android API v2 - Interactive InfoWindow (like in original android google maps)

+0

我在這裏使用自定義標記。實際上,我能夠下載圖像並將其設置在標記上。唯一的問題是,標記上的圖像沒有立即顯示(在onPostExecute上)。我需要再次刷新或添加標記以查看標記上的圖像。 – mgcaguioa 2014-10-07 10:52:24

+0

我想是的,我得到了問題,實際上你已經在執行下面寫了marker.set圖標。你應該把它寫在postexecute()中。實際上,一個異步任務執行代碼paralley並且你正在設置下面的圖像,是機會它不會被執行 – 2014-10-07 10:58:06

+0

是的,我明白了。我必須在postexecute()上設置圖像。順便說一句,謝謝! – mgcaguioa 2014-10-07 11:16:33