2.5 標記點事件

點擊事件

使用OnMarkerClickListener()方法來處理標記點的點擊事件

首先,要先呼叫setOnMarkerClickListener()物件,此方法以OnMarkerClickListener()作為參數,詳細程式碼如下 (寫在onMapReady裡面)

1 map.addMarker(new MarkerOptions().position(TAIPEI));

2 map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener(){

3 @Override

4 public boolen OnMarkerClick(Marker marker){

5 Toast.makeText(getApplicationContext(),"You clicked the marker.",Toast.LENGTH_LONG).show();

6 return false;

7 }

8 });

第1行:一樣先定義好Marker

第2行:來呼叫setOnMarkerClickListener()

第5行:設定標記點擊事件,這裡觸發的事件是跳出Toast的「標記點擊」字樣

第6行:這個函數會回傳一個布林值,若回傳false的話則會發生預設行為以及自訂行為,預設行為是顯示其資訊視窗 (如有的話),以及移動相機以將標記置中放在地圖上

移動事件

首先,我們要設定標記為可拖曳,語法如下

map.addmarker(new MarkerOptions().position(TAIPEI).draggle(true));

在讓標記可拖曳後,有三種拖曳相關方法可供呼叫

  • onMarkerDragStart() 初始化標記時呼叫

  • onMarkerDrag() 拖曳標記時呼叫

  • onMarkerDragEnd() 釋放標記時呼叫

具體寫法如下(以onMarkerDragStart()為例)

map.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener(){

@Override public void onMarkerDragStart(Marker marker){

Toast.makeText(getApplicationContext(),"Drag started",Toast.LENGH_SHORT).show();

} @Override public void onMarkerDrag(Marker marker) { Toast.makeText(getApplicationContext(), "Dragging.", Toast.LENGTH_SHORT).show();

        }

@Override public void onMarkerDragEnd(Marker marker) { Toast.makeText(getApplicationContext(), "Drag ended.", Toast.LENGTH_SHORT).show();

        }

} )

位置判讀

使用double的變數來接收標記的位置

latlng.latitude 可取得緯度 latlng.longitude 可取得經度

LatLng latlng=marker.getPosition();    
double latitude=latlng.latitude;
double longitude=latlng.longitude;
                 Toast.makeText(getApplicationContext(),"Latitude="+latitude+"\nLongitude="+longitude,Toast.LENGTH_LONG).show();

results matching ""

    No results matching ""