Как отобразить воздушный шар на MapView, когда карта будет показана? - PullRequest
1 голос
/ 03 июля 2011

Я использую библиотеку android-mapviewballoons для отображения воздушных шаров. Итак, когда пользователь нажимает на мой маркер, появляется шарик.

У меня вопрос: как отобразить всплывающую подсказку для определенного элемента, не дожидаясь щелчка пользователя?

Upd. как определить меня? В настоящее время у меня есть следующее:

public class Map extends MapActivity {
    public void onCreate(Bundle savedInstanceState) {
        // here I have extras.getDouble("lat") and extras.getDouble("lng") - 
        // the location balloon should be shown for
        ...
        itemizedOverlay = new MapOverlay(drawable, mapView);
        for (int i = 0; i < items.getCount(); i++) {
           // here I add markers, one of them will have lat and lng equal to 
           // the values passed in extras

    public class MapOverlay extends BalloonItemizedOverlay<OverlayItem> {
        ...
        protected OverlayItem createItem(int i) {

Кроме того, в отношении следующего кода:

//  BalloonOverlayView is a raw type. References to generic type BalloonOverlayView<Item> should be parameterized
BalloonOverlayView bov = new BalloonOverlayView(context, 50);
// What is item there? should be getItem(i)?
bov.setData(item);
// The method setPosition(int) is undefined for the type BalloonOverlayView
BalloonOverlayView.setPosition(i);

Ответы [ 2 ]

4 голосов
/ 05 июля 2011

Пожалуйста, обратитесь к этому учебнику.

В методе @Override protected OverlayItem createItem(int i) вы можете надуть этот шарик оварлай для вашего конкретного индекса.Предположим, что ваша конкретная точка равна 2, тогда вы можете сделать следующее в методе выше

if(i==2){
BalloonOverlayView bov = new BalloonOverlayView(context, 50);
          bov.setData(item);
          BalloonOverlayView.setPosition(i);
          BalloonOverlayView.setGeoPoint(geoPoint);

          MapView.LayoutParams params = new MapView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, geoPoint,MapView.LayoutParams.BOTTOM_CENTER);
          params.mode=MapView.LayoutParams.MODE_MAP;
          mapView.addView(bov, params);
}
3 голосов
/ 16 июля 2011

Попробуйте это

itemizedOverlay.onTap(point2, mapView);

Вы должны идентифицировать его через Geopoint, вот описание

OnTap

public boolean onTap (GeoPoint p, MapView mapView)

Обработка события касания. Касание будет обрабатываться только в том случае, если оно приземляется на элемент и переопределено onTap (int) для возврата true

Библиотека шаров уже переписала ее, поэтому вам просто нужно вызвать метод onTap.

...