2012-10-29 61 views
2

我已經顯示的多個銷在地圖中在相同的顏色,但我需要爲每個位置處顯示不同的顏色銷,下面是代碼,如何在Android中的地圖上顯示不同的顏色引腳?

Drawable drawable; 
AddItemizesOverlay itemizedOvrealy; 
drawable = this.getResources().getDrawable(R.drawable.color1); 
     itemizedOverlay = new AddItemizedOverlay(drawable, mapView); 
     for(int i=0;i<paramLat.size();i++) 
     { 
      lat = Double.parseDouble(paramLat.get(i)); 
      lon = Double.parseDouble(paramLong.get(i)); 
      geoPoint = new GeoPoint((int)(lat * 1E6), (int)(lon *1E6)); 
      geopoints.add(geoPoint); 
      List<Overlay> mapOverlays = mapView.getOverlays(); 
      name = calloutName.get(i); 
      overlayitem[i] = new Overlay 
      Item(geoPoint, calloutName.get(i), "Time: " + calloutTime.get(i)); 
      itemizedOverlay.addOverlay(overlayitem[i]); 
      mc.animateTo(geoPoint); 
     } 
      mapView.getOverlays().add(itemizedOverlay); 

AddItemizedOverlay.java

public AddItemizedOverlay(Drawable drawable, MapView mapView) { 
     super(boundCenter(drawable), mapView); 
     c = mapView.getContext(); 
    } 

這裏通過銷圖像作爲'color1'可繪製的名稱,但我需要發送不同的顏色引腳作爲drawable。結果每個位置由不同的引腳標記。

回答

3

根據你的代碼,itemizedOverlay = new AddItemizedOverlay(drawable, mapView);在這裏你做出任何條件,改變每個paramLat提拉。因此,替換你的itemizedOverlay裏面的for循環,並設置不同的drawable與條件。

+0

我沒有這個代碼,但最後一個位置值僅顯示。 – Dhana

+0

嗨,試試這個代碼循環內最後 mapView.getOverlays()。add(itemizedOverlay); –

+0

drawable = this.getResources()。getDrawable(R.drawable.marker);我們可以將圖像文件名稱存儲爲字符串,並使用它來獲取資源標識爲可繪製的? – Dhana

2

在for循環中創建AddItemizesOverlay對象,併爲推針傳遞不同的圖像。

GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue()); 

drawable = this.getResources().getDrawable(R.drawable.marker); 
itemizedOverlay = new MyItemizedOverlay(drawable); 
OverlayItem overlayItem = new OverlayItem(point, "", ""); 
itemizedOverlay.addOverlay(overlayItem); 
mapOverlays.add(itemizedOverlay); 


GeoPoint point2 = new GeoPoint(lt2.intValue(),long2.intValue()); 
// All "B"s 
drawable = this.getResources().getDrawable(R.drawable.icon); 
itemizedOverlay = new MyItemizedOverlay(drawable); 
OverlayItem overlayItem1 = new OverlayItem(point2, "", ""); 
itemizedOverlay.addOverlay(overlayItem1); 
mapOverlays.add(itemizedOverlay); 
1

您不需要添加多個ItemizedOverlay以具有不同的標記,因爲您可以爲每個添加到單個ItemizedOverlayOverlayItem分配不同的標記。

貝婁一個關於如何去做的例子。

您使用創建和定義邊界每個標記(1,2腳):

pin1 = this.getResources().getDrawable(R.drawable.pin_gps); 
    pin1.setBounds((int)(-drawable_gps_pin.getIntrinsicWidth()/2),-drawable_gps_pin.getIntrinsicHeight(), (int)(drawable_gps_pin.getIntrinsicWidth()/2), 0); 
    pin2 = this.getResources().getDrawable(R.drawable.pin_gps); 
    pin2.setBounds((int)(-drawable_gps_pin.getIntrinsicWidth()/2),- 

然後你使用默認創建ItemizedOverlay trhe引腳之一:

itemizedOverlay = new AddItemizedOverlay(pin1, mapView); 

當你想添加使用的標記pin1

overlayitem = new OverlayItem(geoPoint, calloutName.get(i), "Time: " + calloutTime.get(i)); 
    itemizedOverlay.addOverlay(overlayitem); 

Whe n您要添加使用pin2標記:

overlayitem = new OverlayItem(geoPoint, calloutName.get(i), "Time: " + calloutTime.get(i)); 
    overlayitem.setMarker(pin2); 
    itemizedOverlay.addOverlay(overlayitem); 

最後你加ItemizedOverlay到'MapView`:

mapView.getOverlays().add(itemizedOverlay); 

問候

相關問題