2011-02-07 9 views
7

アイブ氏は、これは私が欲しいものを正確で、同じことをacheiveしようとして: - クリックされたとき、私はポップアップを表示したい 私はオーバーレイでgoogleMapViewを実装しているGoogle Maps ImageのMapViewショーオーバーレイ詳細

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

クラス:以下

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を表示イムたメインクラスであるItemizedOverlay:

public **class MapView** extends MapActivity{ 
    private ArrayList<MyClass> 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(); 
    } 
} 

答えて

12

githubのAndroid-mapviewballoonsを確認してください。あなたはこの正確なことを行うことができるItemizedOverlayを持っています。私はいくつかのアプリで使っています。

+0

ありがとう、私はそれを試してみます。 – user606669

+0

恐ろしい!偉大な、使いやすい、良い指示と例を動作させる!もし私ができるなら、私は+2を与えるだろう。 – plainjimbo