2016-04-02 31 views
-1

如何爲每個標記設置不同的圖標,從服務器接收標記經度和緯度,並在地圖屏幕上繪製每個設備的緯度和緯度,並且每5秒鐘刪除以前的標記。如何爲每個標記設置不同的圖標?

try { 
      //ArrayList list = new ArrayList<>(); 
      //TODO: remove previus markers 
      if (marker != null) { 
       mMap.clear(); 
       Toast.makeText(getApplicationContext(), "Remove", Toast.LENGTH_LONG).show(); 

      } 
      for (LatLng object : latLngList) 

      marker = mMap.addMarker(new MarkerOptions().title("User Name").position(object).icon(BitmapDescriptorFactory.fromResource(R.drawable.female4))); 

      System.out.println(marker.getId()+" Marker id......."); 
     } catch (Exception e) { 
      Toast.makeText(MainActivity.this, "Error ", Toast.LENGTH_LONG).show(); 
      // mMap.clear(); 
     } 

回答

1

您需要有標記圖像和位置(緯度和經度)存儲在服務器上。在從服務器檢索數據時,您將同時獲得這兩個數據。下面是一個示例代碼:

if(googleMap != null){ 
     googleMap.clear(); // This will clear all of the previously added markers 
     ArrayList<ServerItems> listOfItems = new ArrayList<>(); // Where ServerItems is your custom Model 
     for(ServerItems item : listOfItems){ 
      LatLng position = item.getPosition(); // Assuming that Your Model ServerItems contains a method which returns LatLng 
      String markerURL = item.getMarkerURL(); // Assuming that Your Model ServerItems contains a method which returns MarkerURL stored on Server 
      ImageLoader.getInstance().loadImage(markerURL, new ImageLoadingListener() { 
       @Override 
       public void onLoadingStarted(String imageUri, View view) { 

       } 

       @Override 
       public void onLoadingFailed(String imageUri, View view, FailReason failReason) { 
        googleMap.addMarker(new MarkerOptions().position(position)); 
       } 

       @Override 
       public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
        googleMap.addMarker(new MarkerOptions().position(position).icon(BitmapDescriptorFactory.fromBitmap(loadedImage))); 
       } 

       @Override 
       public void onLoadingCancelled(String imageUri, View view) { 
        googleMap.addMarker(new MarkerOptions().position(position)); 
       } 
      }); 

     } 

    } 

請注意,我以加載圖像從服務器位圖的形式使用UniversalImageLoader

+0

請解釋我什麼是MarkerUrl和服務器項目 – Ahmad

+0

正如你所說的,Marker經度和緯度是從服務器接收的。您還必須從服務器接收標記圖像URL。所以,我只是假設一個名爲ServerItem的虛擬模型,其中包含MarkerLatLng和MarkerURL –

相關問題