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();