2012-10-29 3 views
2

제가 동일한 컬러 맵 내의 다수의 핀을 표시 한하지만 각 위치에 대해 다른 색 핀 표시해야 여기서 여기서 상기 핀을 통과Android에서지도에 다른 색상 핀을 표시하는 방법은 무엇입니까?

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

코드,

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은 'color1'과 같은 드로어 블 이름으로 이미지를 만들지 만 드로어로 다른 색상의 핀을 보내야합니다. 결과적으로 각 위치는 다른 핀으로 표시됩니다.

답변

3

은 당신의 코드에 따르면, itemizedOverlay = new AddItemizedOverlay(drawable, mapView); 여기에서 당신은 어떤 조건을 확인하고 각 paramLat에 대한 드로어 블을 변경합니다. 따라서 루프 내에서 itemizedOverlay을 교체하고 if 조건으로 다른 드로어 블을 설정하십시오.

+0

mapView.getOverlays().add(itemizedOverlay); 

감사를 n을 pin2이 사용하는 마커를 추가 할 . – Dhana

+0

안녕하세요, 마지막으로 루프 내에서이 코드를 사용해보세요 mapView.getOverlays(). add (itemizedOverlay); –

+0

drawable = this.getResources(). getDrawable (R.drawable.marker); 우리는 문자열로 이미지 파일 이름을 저장할 수 있고 drawable로서 리소스 ID를 얻기 위해 사용할 수 있습니까? – 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에 각 OverlayItem에 다른 표식을 추가 할 수 있으므로 다른 표식을 사용하려면 ItemizedOverlay을 여러 개 추가 할 필요가 없습니다.

벨로 우는 방법에 대한 예입니다.

다음을 사용하여 작성하고 각 마커 (핀 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

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

마지막으로 당신이 ItemizedOverlay 'MapView`에 추가 :이 코드,하지만 마지막 위치 값 만 표시 않았다

관련 문제