facebook廣告





123

2017年1月29日 星期日

資訊視窗

https://developers.google.com/maps/documentation/android-api/infowindows?hl=zh-tw
資訊視窗會在地圖上方的彈出式視窗中顯示文字或影像。 資訊視窗一律錨定到標記。 預設行為是輕按標記時隨即顯示。

簡介

資訊視窗能讓您在使用者點選標記時,向使用者顯示資訊。 一次只能顯示一個資訊視窗。 如果使用者點擊另一個標記,將會隱藏目前的資訊視窗,並顯示新的資訊視窗。
資訊視窗是朝著裝置螢幕方向繪製,並置中於關聯的標記上方。 預設的資訊視窗會包含粗體標題,而標題下方會有 (選擇性) 片段文字。

新增資訊視窗

新增資訊視窗最簡單的方法是,設定對應標記的 title() 與 snippet() 方法。 設定這些屬性,會讓資訊視窗每次只要點擊標記就會出現。
static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298); Marker melbourne = mMap.addMarker(new MarkerOptions()                           .position(MELBOURNE)                           .title("Melbourne")                           .snippet("Population: 4,137,400"));

顯示/隱藏資訊視窗

資訊視窗是為了回應使用者輕觸事件而設計。 您可以選擇透過呼叫目標標記上的 showInfoWindow(),以程式設計方式顯示資訊視窗。呼叫 hideInfoWindow() 可以隱藏資訊視窗。
static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298); Marker melbourne = mMap.addMarker(new MarkerOptions()                           .position(MELBOURNE)                           .title("Melbourne")); melbourne.showInfoWindow();

自訂資訊視窗

您也可以自訂資訊視窗的內容與設計。 如果要這樣做,您必須建立 InfoWindowAdapter 介面的具體實作,然後透過實作呼叫 GoogleMap.setInfoWindowAdapter()。介面包含兩種實作方法:getInfoWindow(Marker) 與 getInfoContents(Marker)。 API 會先呼叫 getInfoWindow(Marker),如果傳回 null,會接著呼叫 getInfoContents(Marker)。如果同樣傳回 null,就會使用預設資訊視窗。
前述的第一項 (getInfoWindow()) 可讓您提供要用於整個資訊視窗的檢視。 前述的第二項 (getInfoContents()) 可讓您僅自訂視窗內容,但保留預設資訊視窗框架與背景。
注意:繪製的資訊視窗「並非」即時檢視。 檢視傳回時會轉譯為影像 (使用 View.draw(Canvas))。
這表示地圖上的資訊視窗不會反映出後續對檢視的所做變更。 如果要在稍後更新資訊視窗 (例如,完成載入影像後),請呼叫 showInfoWindow()。 因此,資訊視窗不會有一般檢視常見的任何互動,例如,輕觸或手勢事件。然而,您可以接聽整個資訊視窗上的一般點擊事件,如下一節節中所述。
以下影像分別顯示預設資訊視窗、含有自訂內容的資訊視窗,以及含有自訂框架與背景的資訊視窗。
資訊視窗比較

資訊視窗事件

您可以使用 OnInfoWindowClickListener 來接聽資訊視窗上的點擊事件。 如果要在地圖上設定此接聽程式,請呼叫 GoogleMap.setOnInfoWindowClickListener(OnInfoWindowClickListener)。 當使用者按一下資訊視窗時,會呼叫 onInfoWindowClick(Marker),然後會以預設的醒目色彩 (執行 Ice Cream Sandwich 與更新版本的裝置為 Hollo 藍色,舊版 Android 為橘色) 醒目顯示資訊視窗。
如上一節所述,資訊視窗並非即時 View,而是地圖上轉譯為影像的檢視。 因此會捨棄您在檢視上設定的任何接聽程式,您也無法辨別檢視各部分的點擊事件。建議您不要在自訂資訊視窗內放置互動式元件,例如按鈕、核取方塊或文字輸入

沒有留言:

張貼留言