2011-07-03 133 views
1

我使用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); 
+0

你最好问一下该库的开发人员,他们可能会也可能不会看到这个StackOverflow问题。 – CommonsWare

+0

谢谢,@CommonsWare。其实,我已经给他发了一条消息,但是希望这里的某个人也已经实施了。 –

回答

4

Plase参考this tutorial.

@Override protected OverlayItem createItem(int i)方法,你可以抬高该气球ovarlay为您的特定指数。假设你的具体点是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); 
} 
+0

谢谢,但它不回答我的问题。 –

+0

@LA_是否想要在地图上显示所有插针的气球,或仅显示特定的气球而不选择它? – Harshad

+0

对于一个特定标记,而不选择该标记。 –

3

试试这个

itemizedOverlay.onTap(point2, mapView); 

你必须通过GeoPoint对象识别它,这里是描述

中的onTap

public boolean onTap(GeoPoint p,MapView mapView)

处理轻击事件。如果它的土地上的项目抽头才会被处理,并已覆盖onTap(INT)返回true

气球库已经可以覆盖它,所以你只需要调用该方法的onTap。