설 연수
하하호홓
설 연수
전체 방문자
오늘
어제
  • 분류 전체보기 (231)
    • Back-End (2)
      • Java (20)
      • JSP (13)
      • Spring (18)
      • Kotlin (0)
      • node.js (0)
    • Front-End (68)
      • JavaScript (19)
      • jQuery (39)
      • Angular (4)
      • HTML (5)
    • Dev-Ops (12)
      • Linux, Cloud (5)
      • docker, k8s (5)
      • ElasticSeach (2)
    • Other (33)
      • OOP (3)
      • 알고리즘 (2)
      • DB (12)
      • Git (1)
      • Swift (4)
    • Backup (65)

블로그 메뉴

    공지사항

    인기 글

    태그

    • angular2
    • angular callback
    • RESTful
    • page not found
    • Angular
    • 크로스도메인
    • INVALID
    • docker
    • Kafka
    • jquery invalid
    • Redis
    • angular4
    • jOOQ
    • 패스트캠퍼스
    • MYSQL
    • mongodb
    • flex
    • CORS
    • angular 콜백
    • 404 error

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    설 연수

    하하호홓

    Backup

    구글맵 이벤트 - 클릭하면 메세지창출력

    2012. 4. 18. 11:31

    이벤트 리스너에서 클로저 사용하기

    이벤트 리스너를 실행할 때는 비공개 및 영구 데이터를 모두 객체에 연결할 수 있다는 장점이 있습니다. 자바스크립트는 '비공개' 인스턴스 데이터는 지원하지 않지만 내부 함수가 외부 변수에 액세스할 수 있도록 해 주는 클로저를 지원합니다. 클로저를 사용하면 이벤트 리스너에서 이벤트가 발생한 객체에 속하지 않은 변수에 액세스할 수 있습니다.

    다음 예에서는 이벤트 리스너에서 함수 클로저를 사용하여 마커 집합에 비밀 메시지를 할당합니다. 각 마커를 클릭하면 마커 자체에 포함되지 않은 비밀 메시지의 일부를 검토하게 됩니다.

    var map;
    function initialize() {
     
    var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
     
    var myOptions = {
        zoom
    : 4,
        center
    : myLatlng,
        mapTypeId
    : google.maps.MapTypeId.ROADMAP
     
    }

      map
    = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

     
    // Add 5 markers to the map at random locations
     
    var southWest = new google.maps.LatLng(-31.203405,125.244141);
     
    var northEast = new google.maps.LatLng(-25.363882,131.044922);
     
    var bounds = new google.maps.LatLngBounds(southWest,northEast);
      map
    .fitBounds(bounds);
     
    var lngSpan = northEast.lng() - southWest.lng();
     
    var latSpan = northEast.lat() - southWest.lat();
     
    for (var i = 0; i < 5; i++) {
       
    var location = new google.maps.LatLng(southWest.lat() + latSpan * Math.random(),
            southWest
    .lng() + lngSpan * Math.random());
       
    var marker = new google.maps.Marker({
            position
    : location,
            map
    : map
       
    });
       
    var j = i + 1;
        marker
    .setTitle(j.toString()); // 커서 올렷을때 나오는 메세지
        attachSecretMessage
    (marker, i);
     
    }
    }

    // The five markers show a secret message when clicked
    // but that message is not within the marker's instance data

    function attachSecretMessage(marker, number) {
     
    var message = ["This","is","the","secret","message"];
     
    var infowindow = new google.maps.InfoWindow(
         
    { content: message[number],
            size
    : new google.maps.Size(50,50)
         
    });
      google
    .maps.event.addListener(marker, 'click', function() {    // 이벤트 등록
        infowindow
    .open(map,marker);
     
    });
    }

    예 보기(event-closure.html)

    'Backup' 카테고리의 다른 글

    구글맵 API - DOM 이벤트 수신하기  (0) 2012.04.18
    구글맵 이벤트 - 속성 가져오기 (예제-줌속성)  (0) 2012.04.18
    구글맵 이벤트 - 클릭한곳 마커찍기  (0) 2012.04.18
    구글맵 이벤트 - 클릭하면 이동  (0) 2012.04.18
    구글맵 사용자 위치탐색 navigator.geolocation & google.gears  (0) 2012.04.18
      'Backup' 카테고리의 다른 글
      • 구글맵 API - DOM 이벤트 수신하기
      • 구글맵 이벤트 - 속성 가져오기 (예제-줌속성)
      • 구글맵 이벤트 - 클릭한곳 마커찍기
      • 구글맵 이벤트 - 클릭하면 이동
      설 연수
      설 연수

      티스토리툴바