graynote의 이미지
graynote
346
points
4
points

구글맵 API 기본 강좌 03 - 이벤트와 링크

이번 강좌에서는 Event 사용에 대해서 알아보도록 하겠습니다. 마우스 클릭, 드래그, 키보드 입력이 있을때 Event가 발생하고, 구글맵에서는 이런 이벤트에 대한 처리를 하는 API를 제시해주고 있습니다.

예제보기

1. 현재 지도의 가운데 위도, 경도 표시하기. 마우스 드래그후에 변경된 위도와 경도를 표시하기

//가운데 위도,경도 표시 
GEvent.addListener(map, "moveend", function() {
  var center = map.getCenter();
  document.getElementById("position").innerHTML = center.toString();
});

- GEvent.addListener(source, event, handler)를 통해서 "moveend" 이벤트가 발생했을때 실행시켜줄 함수를 등록합니다.
- moveend가 발생했을 때 현재 지도의 가운데 위치를 <div id="position"> 에 표시합니다.

2. 마커에 클릭시 인포윈도우 표시하기.

function createMarker(point, html) {
  var marker = new GMarker(point); 
  gmarkers[i++] = marker;
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
  });
  return marker;
}

- 여러개의 마커를 만들기 위해서 마커 생성 부분을 createMarker 함수로 만들었습니다.
- GEvent.addListner로 marker에 "click" 이벤트가 일어날 경우 openInfoWindowHtml을 실행시킵니다.
- 예제에서는 '서울', '도쿄', '상하이' 세개를 생성해서 각각의 클릭시에 인포윈도우가 표시되도록 하였습니다.

3. 링크와 연동하기

function linkClick(i) {
  //이벤트 생성
  GEvent.trigger(gmarkers[i], "click");
}

- GEvent.trigger로 코드에서 직접 event "click"이벤트를 생성시켜주었습니다.

<a href="javascript:linkClick(0)">서울</a>

- 서울에 자바스크립트가 실행되도록 링크시켜놓는다면, '서울'을 클릭했을 때 지도에서 마커를 클릭한 것과 같은 효과를 보여줍니다.

세번째 강좌는 여기서 마치겠습니다. 잘못된 부분이나 이해가 안가시는 부분이 있으면 댓글로 달아주세요.

참고사이트
http://www.google.com/apis/maps/documentation/events.html
http://www.google.com/apis/maps/documentation/reference.html#GEvent

첨부 파일파일 크기
gmap_ex2.html2.43 KB
Tag :

Trackback URL for this post:

http://www.openonweb.com/trackback/91
kaakiz
11
points

이벤트의 종류엔 어떤 것들이 있나요?

graynote의 이미지
graynote
346
points

각 오브젝트마다 생성하는 이벤트의 수와 종류가 틀립니다. 레퍼런스 문서(http://www.google.com/apis/maps/documentation/reference.html) 에서 각 오브젝트와 관련된 이벤트 타입에 대해서 Events항목에 정리를 해두고 있으니 확인해보시기 바랍니다.

GMarker의 경우에는 click, dblclick, mousedown, mouseup, mouseover, mouseout, infowindowopen, infowindowbeforeclose, infowindowclose, remove, dragstart, drag, dragend, visibilitychanged 와 같은 이벤트들이 있습니다. 기본 강좌의 성격이다 보니, 레퍼런스 수준까지 정보를 제공하지는 못하고 있네요^^; 기본 강좌 끝나고 레퍼런스 매뉴얼 한글화작업도 한번 고려해봐야겠습니다.

댓글 쓰기

이 필드의 내용은 비밀로 유지되며, 공개되지 않습니다.

포맷팅 옵션에 대한 추가 정보

CAPTCHA
스팸방지를 위한 질문입니다.
3 + 0 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.