Demo Google Map Using Closures in Event Listeners
RUN
<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <meta charset="utf-8"> <title>Using closures in event listeners</title> <style> html, body, #map-canvas { height: 100%; margin: 0px; padding: 0px } </style> <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDfNk5eVWmQB9e6ApnWzICLNIY5lUXpOBw&language=vi"></script> <script> function initialize() { // Thông số hiển thị bản đồ var mapOptions = { zoom: 4, center: new google.maps.LatLng(10.771971, 106.697845) }; // Hiển thị bản đồ var map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions); // Thêm 5 marker ngẫu nhiên trên bản đồ // Đây là hai thông số southWest và northEast của bản đồ var southWest = new google.maps.LatLng(12.771971, 104.244141); var northEast = new google.maps.LatLng(10.771971, 106.697845); // Khởi tạo một bounds của 2 vị trí trên var bounds = new google.maps.LatLngBounds(southWest, northEast); // Fill bound vào google map map.fitBounds(bounds); // Khoảng cách giữa các tọa độ northEast và northEast var lngSpan = northEast.lng() - southWest.lng(); var latSpan = northEast.lat() - southWest.lat(); // Lặp từ 0 đến 4 để hiển thị 5 marker ngẫu nhiên for (var i = 0; i < 5; i++) { var position = new google.maps.LatLng( southWest.lat() + latSpan * Math.random(), southWest.lng() + lngSpan * Math.random()); var marker = new google.maps.Marker({ position: position, map: map }); // Thiết lập tiêu đề cho marker marker.setTitle((i + 1).toString()); // Gọi hàm attachSecretMessage để hiển thị message cho từng marker attachSecretMessage(marker, i); } } // Thêm message thông báo khi click vào marker // tham số là marker đang click và số thứ tự của message // như vậy nó sử dụng closure để thiết lập message cho từng marker function attachSecretMessage(marker, num) { // Danh sách message var message = ['Welcome', 'To', 'M', 'Website', 'Freetuts.net']; // Khởi tạo của sổ message var infowindow = new google.maps.InfoWindow({ content: message[num] }); // Gắn của sổ vào sự kiện clic vào marker google.maps.event.addListener(marker, 'click', function() { // Hàm open có hai tham số đó là map nó đang được gắn vào và marker đó infowindow.open(marker.get('map'), marker); }); } google.maps.event.addDomListener(window, 'load', initialize); </script> </head> <body> <div id="map-canvas"></div> </body> </html>
PHÓNG TO