문제

핀이 많은지도를 가지고 있으며 핀을 클릭하면 맞춤 풍선이 열리고 해당 핀에 대한 정보가 표시됩니다.또한 검색 표시 줄이 있습니다. 여기서 노브의 이름을 입력하면 정보가 나타나지만 검색된 핀으로 이동하도록 원합니다. 예제 : 당신은 다른 야채 핀을 가지고 있으며 당근을 검색 할 때 검색 목록은 요소 당근을 표시하고, 그것을 클릭하면 당근 핀의 풍선이inflate. 그래서, 나의 질문 은 다음과 같습니다. 온티브 () void 방법이 있습니까? onTap (int 인덱스)는 부울을 반환합니다.

도움이 되었습니까?

해결책

자신만의 항목 별 오버레이를 만들고 ONTAP 메서드를 재정의하고 기본 클래스에서 항목 별 클래스의 인스턴스를 만들고 overlay.ontap (포인트)

을 호출합니다.

샘플 코드 :

public class MyItemizedOverlay<Item> extends ItemizedOverlay<OverlayItem> {
    private ArrayList<OverlayItem> m_overlays;
    private MapView mapView;
    final MapController mc;

    public MyItemizedOverlay(Drawable defaultMarker, MapView mapView) {
        super(boundCenterBottom(defaultMarker), mapView);
        m_overlays = new ArrayList<OverlayItem>();
        mc = mapView.getController();
        populate();
    }

    public void addOverlay(OverlayItem overlay) {
        m_overlays.add(overlay);
        setLastFocusedIndex(-1);
        populate();
    }

    public ArrayList<OverlayItem> getOverlays() {
        return m_overlays;
    }

    public final boolean onTap(int index) {
        GeoPoint point;
        point = createItem(index).getPoint();
        mc.animateTo(point);    
        return true;
    }

    ...
}
.

주 클래스

public class Main extends MapActivity {
    private MapView mapView;
private List<Overlay> mapOverlays;
    private MyItemizedOverlay overlay;
private Drawable pin;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        doAction();
    }

    private void doAction() {
    mapView = (MapView)findViewById(R.id.map_view);
        pin = res.getDrawable(R.drawable.pin);

        overlay = new MyItemizedOverlay(pin, mapView);

        GeoPoint point = new GeoPoint((int)(7*1E6),(int)(42*1E6));
        overlayItem = new OverlayItem(point, "title", "text");

    overlay.addOverlay(overlayItem);

        mapOverlays = mapView.getOverlays();
    mapOverlays.add(overlay);

        //we tap the point here
        overlay.onTap(0);
    }
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top