Preface:
要在 Google Map 上加入標記,需要利用的是 google.maps.Marker 這個物件. 延續 Google Map API 入門教學(一)的例子,可以將 JavaScript 加上以下的語法:
- google.maps.event.addListener(currentMap, "click", function(event) {
- // Setting of marker
- var optionOfMarker = {
- position: event.latLng,
- map: currentMap,
- title: event.latLng.toString()
- };
- // Show marker in the place of mouse clicks
- mapMarker = new google.maps.Marker(optionOfMarker);
- });
以上的程式碼加進去以後就可以讓使用者在地圖上一直點,標記就會一直出現。如果只讓標記出現一個的話,可以在 click 事件觸發時先檢查標記的變數是否存在,如果存在的話就把標記從地圖上移除:
- // Clear marker if it already exists
- if (mapMarker) mapMarker.setMap(null);
如果需要刪除地圖註冊的事件時,可以使用 clearListeners 函式去移除事件:
- google.maps.event.clearListeners(currentMap, "click");
使用方法如下:
- mapMarker.setAnimation(google.maps.Animation.BOUNCE);
把上面提到的全部加上去做成完整的 JavaScript 的話,可以寫成下面的範例:
- var currentMap;
- var mapMarker;
- $(function(){
- initialize();
- });
- function initialize() {
- var latlng = new google.maps.LatLng(-34.397, 150.644);
- var myOptions = {
- zoom: 11,
- center: latlng,
- mapTypeId: google.maps.MapTypeId.HYBRID
- };
- currentMap = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
- // Clear all the click event of the map
- google.maps.event.clearListeners(currentMap, "click");
- // Register a click event to the map
- google.maps.event.addListener(currentMap, "click", function(event) {
- // Clear marker if it already exists
- if (mapMarker) mapMarker.setMap(null);
- // Setting of marker
- var optionOfMarker = {
- position: event.latLng,
- map: currentMap,
- title: event.latLng.toString()
- };
- // Show marker in the place of mouse clicks
- mapMarker = new google.maps.Marker(optionOfMarker);
- mapMarker.setAnimation(google.maps.Animation.DROP);
- });
- }
Supplement:
* Google Maps Javascript API V3 Reference
* Google Map API Tutorial - Simple markers
* Google Marker Icon List
* Google Map API Tutorial - Geocoding service
* Tool - 查詢地點的經緯度
沒有留言:
張貼留言