2011-01-17 8 views
2

私はタップするとpopuoにテキストが表示されるマップビューとオーバーレイアイテムがあります。私が望むのは、ユーザーがこれらのオーバーレイアイテムの外の地図をタップするか、現在表示されている場合にポップアップを非表示にすることです。android mapview overlay popup hide

答えて

0

私が知っているように唯一の方法は、マップに新しいオーバーレイを追加することです。魔女はポップアップとして機能します。オーバーレイの外側をタップすると、それをオーバーレイリストから削除するだけです。

これは、ポップアップのイベントを自分で描画して処理する必要があることを意味します。

+0

我々は、ポップアップウィンドウの外側をクリックするかどうかを決定する方法について説明します。 – mkso

+0

@mksoはMapViewのクリック/タッチを待ち受け、ポップアップのオーバーレイ位置に合っています。 – sidon

0

アイブ氏は、これは私が欲しいものを正確に、同じことをacheiveしようとして: - 私はオーバーレイでgoogleMapViewを実装しているhttp://proxy.latest.xuemath.appspot.com/img?s=aR.1f.1be6ifej.2ec/_Fbk8IlxNQXM/S-ruq97dRWI/AAAAAAAAELY/s-o3onSReiU/s400/kml_google_maps_v3.bmp

、私は1つの問題を持っている各オーバーレイをクリックしたときに私は、ポップアップを表示したい、と別のオーバーレイをクリックすると、以前のポップスが消え、クリックした場所(つまり投影ポイント)に新しいポップスが表示されます。そして、画面上の他の場所をクリックするとポップアップが表示されません。onTickイベントを使用してonclickを記録します。 (map_overlay)は、誰かが地図上の投影点をクリックしたときに表示したいレイアウトです。コードは以下の通りで、map_overlay.xmlは任意のファイルである可能性があります。

クラス:ItemizedOverlay: - 以下

public boolean onTap(GeoPoint p, MapView mapView) { 

LayoutInflater inflater = (LayoutInflater)cContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

LayoutParams lp = new MapView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT, p, LayoutParams.WRAP_CONTENT); 
LinearLayout view = (LinearLayout)inflater.inflate(R.layout.map_overlay, null); 

mapView.removeView(view);  
mapView.invalidate();  
mapView.addView(view,lp); 

mapView.invalidate(); 

return true; 
} 

は、上記のように、私は別のクラスでONTAPイベントを実装している発呼投影正常に動作している点やIMを表示イムするメインクラスです。

公開クラスMapView extends MapActivity { private ArrayList overlayItem;

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.large_mapview); 
    mapView = (MapView) findViewById(R.id.mapview); 
    // mapView.setBuiltInZoomControls(true); 

    List<Overlay> mapOverlays = mapView.getOverlays(); 
    Drawable drawable = this.getResources().getDrawable(R.drawable.mappointer2); 
    ItemizedOverlay itemizedoverlay = new ItemizedOverlay(drawable,this); 
    OverlayItem overlayitem; 
    GeoPoint point; 
    double lat; 
    double lng;   

    for (int i = 0; i < overlayItem.size(); i++) { 

     lat = Double.parseDouble(overlayItem.get(i).getLatitude()); 
     lng = Double.parseDouble(overlayItem.get(i).getLongitude()); 
     point = new GeoPoint((int) (lat * 1E6),(int) (lng * 1E6)); 

     overlayitem = new OverlayItem(point, i+"".toString(), overlayItem.get(i).getDetails().toString()); 
     itemizedoverlay.addOverlay(overlayitem); 
     mapOverlays.add(itemizedoverlay); 

    } 

    mapView.invalidate(); 
} 

}

関連する問題