2016-04-02 19 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

前述のとおり、マーカーの経度と緯度はサーバーから受信されます。サーバーからマーカー画像URLも受け取らなければなりません。ですから、MarkerLatLngとMarkerURLを含むServerItemという名前のダミーモデルを仮定します –