2011-09-27 2 views
0

내 애플리케이션에서 Google지도에 마커를 두 개 이상 추가하고 싶습니다. 간단히 말해 하나의 마커를 추가 할 수 있지만 어떻게 여러 마커를 추가 할 수 있는지 모르겠습니다. 내가 어떻게 할 수 있는지 말해줘.android and google map을 사용하는 다중 마커

+0

이 여러 시장 비트 맵 또는 같은 이미지의 단지 여러 인스턴스를 의미합니까? – NSjonas

+0

예 복수 이미지 .... –

답변

0

ItemizedOverlay를 사용하여 다중 레이아웃을 추가 할 수 있습니다. 여기 ItemizedOverlay 의 샘플 코드가`공용 클래스 YourItemizedOverlay는 ItemizedOverlay를 확장 {

private ArrayList<OverlayItem> myOverlays ; 

public YourItemizedOverlay(Drawable defaultMarker) { 
    super(boundCenterBottom(defaultMarker)); 
    yourOverlays = new ArrayList<OverlayItem>(); 
    populate(); 
} 

public void addOverlay(OverlayItem overlay){ 
    yourOverlays.add(overlay); 
    populate(); 
} 

@Override 
protected OverlayItem createItem(int i) { 
    return yourOverlays.get(i); 
} 

// Removes overlay item i 
public void removeItem(int i){ 
    yourOverlays.remove(i); 
    populate(); 
} 

@Override 
public int size() { 
    return yourOverlays.size(); 
} 


public void addOverlayItem(OverlayItem overlayItem) { 
    yourOverlays.add(overlayItem); 
    populate(); 
} 


public void addOverlayItem(int lat, int lon, String title) { 
    try { 
     GeoPoint point = new GeoPoint(lat, lon); 
     OverlayItem overlayItem = new OverlayItem(point, title, null); 
     addOverlayItem(overlayItem);  
    } catch (Exception e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 
} 

@Override 
protected boolean onTap(int index) { 
    // TODO Auto-generated method stub 
    String title = yourOverlays.get(index).getTitle();//display message when you touch your marker 
    Toast.makeText(YourMapActivity.context, title, Toast.LENGTH_LONG).show(); 
    return super.onTap(index); 
} 

}`

2

size()createItem() 방법으로 ItemizedOverlay 개 이상의 마커를 처리해야하는 문제입니다. size() 메서드는 원하는 마커 수를 반환해야하며 createItem()은 인덱스를 기준으로 각 OverlayItem을 반환해야합니다.

Here is a sample project 4 개의 마커가있는지도를 보여줍니다.

+0

링크에 감사 드리며 작동합니다 ...하지만 현재 위치에 마커를 추가하고 다른 위치에 다른 마커를 추가하고 싶습니다. 현재 위치를 감지 한 후 마커를 추가 할 수 없습니다 ... 이유를 말해 줄 수 있습니까? –

0

마커 수가 적 으면 동일한 오버레이 클래스를 여러 번 사용할 수도 있습니다. 기본지도 오버레이는 사용하기가 훨씬 쉽지만 특정 시점 이후에는 매우 비효율적입니다. I는 현재 위치에 대한 클래스의 두 인스턴스를 사용 신고 된 위치는 다음과 같이

overlayList = mapView.getOverlays(); 
    overlayList.clear(); 
    locationOverlay = new MapOverlay(); 
    pushpinOverlay = new MapOverlay(); 

PNG 용 마커 ID를 설정은 X 오프셋과 Y 여기서 오프셋. (MapOverlay 클래스에 코드화 된 함수)

결국 무효화하여 다시 그리기를 강제합니다.

두 마커의 경우 매우 잘 작동했습니다.