항목이 선택되면 풍선을 팽창시킵니다
-
09-09-2020 - |
문제
핀이 많은지도를 가지고 있으며 핀을 클릭하면 맞춤 풍선이 열리고 해당 핀에 대한 정보가 표시됩니다.또한 검색 표시 줄이 있습니다. 여기서 노브의 이름을 입력하면 정보가 나타나지만 검색된 핀으로 이동하도록 원합니다. 예제 : 당신은 다른 야채 핀을 가지고 있으며 당근을 검색 할 때 검색 목록은 요소 당근을 표시하고, 그것을 클릭하면 당근 핀의 풍선이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);
}
}
. 제휴하지 않습니다 StackOverflow