Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android進階:在地圖MapView中 點擊Overlay彈出帶帶尾巴的浮動氣泡 提示信息並關閉

Android進階:在地圖MapView中 點擊Overlay彈出帶帶尾巴的浮動氣泡 提示信息並關閉

編輯:Android開發實例

用戶查詢POI點後會在MapView中以Overlay的方式顯示POI點信息 用戶點擊Overlay後可以顯示詳細信息

 

先看效果如圖

 

 

在相應的Overlay所在的GeoPoint顯示該提示

 

下面看實現:

 

首先背景為9patch圖片

 

 

這樣就可以隨意在裡面加內容了 我這裡通過一個布局文件來進行控制

 

 

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2.  android:background="@drawable/info_bubble"   
  3.  android:layout_width="wrap_content"   
  4.  android:layout_height="wrap_content" 
  5.  android:paddingLeft="5px" 
  6.  android:paddingTop="5px" 
  7.  android:paddingRight="5px" 
  8.  android:paddingBottom="20px"      
  9.    > 
  10.      
  11.     <TextView android:id="@+id/map_bubbleTitle"   
  12.        android:ellipsize="marquee"   
  13.        android:layout_width="120px"   
  14.        android:layout_height="wrap_content" 
  15.        android:gravity="center_horizontal" 
  16.        android:singleLine="true"   />   
  17.     <ImageView android:id="@+id/map_bubbleImage"   
  18.        android:background="@drawable/close"   
  19.        android:layout_width="30px"   
  20.        android:layout_toRightOf="@id/map_bubbleTitle" 
  21.        android:layout_height="wrap_content" /> 
  22.                                   
  23.     <TextView  android:id="@+id/map_bubbleText"   
  24.        android:layout_width="150px"   
  25.        android:layout_below="@id/map_bubbleTitle" 
  26.        android:layout_height="wrap_content"   
  27.        android:singleLine="false"  /> 
  28.          
  29.       
  30. </RelativeLayout> 

 

用了RelativeLayout的布局 對文字的寬度進行了設置,防止文字過多導致超出屏幕范圍

那這裡也可以根據手機屏幕寬度進行動態設置

 

然後再oncreate中初始化這個View

  1. popView = super.getLayoutInflater().inflate(R.layout.overlay_pop, null);  
  2.         mapView.addView( popView,  
  3.               new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT,  
  4.             null, MapView.LayoutParams.BOTTOM_CENTER));  
  5. popView.setVisibility(View.GONE); 

 

這裡沒有設置GeoPoint  由於氣泡的尾巴是在下邊居中的,因此要設置成MapView.LayoutParams.BOTTOM_CENTER.

 

默認是不可見的。。這裡必須要設置為View.GONE 因為  View.INVISIBLE還是會在onlayout中給View定位的 這裡沒有設置GeoPoint就會報錯

 

然後就可以在自己實現的ItemizedOverlay<OverlayItem> 類中的方法onTap中顯示該View

  1. MapView.LayoutParams geoLP = (MapView.LayoutParams) mContext.popView.getLayoutParams();  
  2.         geoLP.point = GeoList.get(i).getPoint();  
  3.         mContext.mapView.updateViewLayout(mContext.popView, geoLP);  
  4.         mContext.popView.setVisibility(View.VISIBLE);  
  5.         textView1 = (TextView) mContext.findViewById(R.id.map_bubbleTitle);  
  6.         textView2 = (TextView) mContext.findViewById(R.id.map_bubbleText);  
  7.         textView1.setText("提示信息");  
  8.         textView2.setText("aaaaaaaaaaaaaaaaaaaaaaaaa===="+GeoList.get(i).getSnippet());  
  9.         ImageView imageView = (ImageView) mContext.findViewById(R.id.map_bubbleImage);  
  10.         imageView.setOnClickListener(new View.OnClickListener(){  
  11.             @Override 
  12.             public void onClick(View v) {  
  13.                   
  14.                 mContext.popView.setVisibility(View.GONE);  
  15.             }  
  16.               
  17.               
  18.         }); 

其中mContext就是自己實現的MapActivity

 

這裡根據當前點擊的Overlay拿到該GeoPoint 然後設置到MapView.LayoutParams中

 

然後設置為可見 就會顯示說明信息了。。同樣點擊關閉按鈕就會設置為View.GONE

 

 

代碼下載地址:   googlemaptest.rar

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved