'프로젝트'에 해당되는 글 4건

  1. Google Maps API Documentation[종료] 2006/04/10
  2. Google Maps API Documentation #3 2006/03/25
  3. Google Maps API Documentation #1 (2) 2006/03/14
  4. 새학기의 프로젝트 (14) 2006/03/07
Google Maps이 V2로 전환되면서 모든 기능과 사용법이 바뀌었기 때문에 연재는 이만 종료해야할 것 같습니다.

사용자들이 만들어놓은 Mashup사이트들에 있는 기등을 모두모두 흡수해서 거대해졌군요...

API공개란 본래 이런 목적이었나 봅니다.

나쁘다는 것은 아니지만 씁쓸하군요...

하위호환도 안된다니...
아..두번째 강의를 올린지 벌써 1주일이 지나버렸군요...
사이에 이것저것 일들이 좀 있어서...잠시 외도를 했습니다만...
주된 원인은 역시 게으름이 문제죠...

그럼 오늘은 "창 열기"와 "맵 오버레이"를 공부해봅시다.


------------------------------------------------------------------

#3 "창 열기"와 "맵 오버레이"

1. "창 열기"

여러분은 housingmaps.com과 같은 사이트에서 구글맵에 말풍선이 달려있고 여러가지 정보를 나타내는 걸 보신 적이 있으실 겁니다. 그걸 구글 맵에서는 창이라고 부르는데, 여기서는 그 창을 열어서 정보를 써 넣는 함수인 openInfoWindow()를 배워봅시다.

var map = new GMap(document.getElementById("map"));
map.centerAndZoom(new GPoint(-122.1419, 37.4419), 4);
map.openInfoWindow(map.getCenterLatLng(), document.createTextNode("Hello, world"));


예 그럼 예제를 살펴보죠. 일단 처음 두줄은 #1을 참조하시면 쉽게 이해하실테고, 두번째인 openInfoWindow를 살펴 봅시다. openInfoWindow는 일단 인자로 표시하고 싶은 위치와 말풍선에 표시할 액션을 가지는데, 사용법은 map.openInfoWindow(위치, 액션); 식으로 사용하시면 됩니다. document.createTextNode는 자바스클립의 매서드이므로 생략하겠습니다. 너무 간단하군요. 이리 쓰기도 참 민망합니다.

예시를 누르시면 어떤걸 만들었는지 볼 수 있습니다.

2. "맵 오버레이"

이번에는 맵 오버레이를 배워보죠. 맵 오버레이는 구글 맵상의 한 점에 표시를 하거나, 줄을 긋는 작업들을 일괄해서 말합니다. 예상하셨듯 소스도 길테고 설명도 길어질 겁니다. 함께 힘내서 견뎌내 보죠.

// Center the map on Palo Alto.
var map = new GMap(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.centerAndZoom(new GPoint(-122.1419, 37.4419), 4);

// Add 10 random markers in the map viewport using the default icon.
var bounds = map.getBoundsLatLng();
var width = bounds.maxX - bounds.minX;
var height = bounds.maxY - bounds.minY;
for (var i = 0; i < 10; i++) {
     var point = new GPoint(bounds.minX + width * Math.random(),
			    bounds.minY + height * Math.random());
     var marker = new GMarker(point);
     map.addOverlay(marker);
}

// Add a polyline with 4 random points. Sort the points by
// longitude so that the line does not intersect itself.
var points = [];
for (var i = 0; i < 5; i++) {
     points.push(new GPoint(bounds.minX + width * Math.random(),
			    bounds.minY + height * Math.random()));
}
points.sort(function(p1, p2) { return p1.x - p2.x; });
map.addOverlay(new GPolyline(points));


일단 우리는 이 예제에서 GMarker(),GPolyline()매서드와 addOverlay()매서드에 집중해야합니다. 다른 부분은 길게만 써 있을뿐 별거 없죠. 읽어보시면 간파하실수 있을겁니다. 그럼 간단하게 저 두가지만 설명해드리죠. 일단 GMarker() 매서드는 맵상의 한 GPoint에 표시를 하기 위한 Maker를 만드는 겁니다. housingmaps.com같은 곳에 보면 도시들이 이렇게 표시가 되어있죠. 이 함수의 경우에는 당연히! GPoint를 인자로 가지는데 앞(#1,#2)의 내용을 살펴보시면 GPoint를 어떻게 만드는지 보실수 있을 겁니다. 물론, 위의 예제에도 있습니다. 이렇게 만든 Maker를 우리는 addOverlay()함수를 통해서 맵에 올려주면 됩니다. addOverlay()함수는 이름 그대로죠. 그냥 올려둘 뿐입니다.

다음으로 저 아래쪽의 코드를 보면 GPolyline()매서드를 찾으실 수 있습니다. 위에서 배운 GMaker()가 한점을 표시하는데 사용되었다면, GPolyline()매서드는 맵상에 줄을 긋기 위해서 사용되는 줄을 만드는데 사용됩니다. 만든 줄을 아시다시피 addOverlay()를 사용해서 보여주면 되겠죠. 우선 GPolyline()매서드는 인자로 GPoint들의 배열을 가지는데 이 GPoint들의 배열을 연달아 이음으로써 선을 만듭니다.

예시를 누르시면 어떤걸 만들었는지 볼 수 있습니다.
요즘 학부 과정의 데이터베이스 수업의 교수님께서 내건 이번학기의 주제인 Mash Up과 관련해서, 가장 많이 Mashup되고 있는 웹사이트중 하나인 Google Maps의 API를 공부하다 이의 한글 문서가 없어서 (저처럼) 고생하는 분들이 있을까봐. "한글로 알기 쉬운 강좌를 써보겠습니다."라는 취지로 Google Maps API 사용 강좌를 시작해봅니다.
무지한 저의 날림 강의(어쩌면 번역에 가까운...)가 잘못된 점이 있다면 이를 발견하신 분께서는 바로바로 지적해주셔서 저를 깨우쳐 주시기 바랍니다.
참고로 제 허접한 한글 설명이 아닌 원문을 원하시는 분은 링크를 클릭해주시기 바랍니다.

------------------------------------------------------------------
#1. 소개
여기서는 구글맵 API의 소개와 간단하게 시작해보는 구글맵 API의 가장 기본적인 코드를 분석해 보도록 하겠습니다.

원문에서는 이 코드가 자바스클립트와 OOP에 친숙한 프로그래머들에게 겨냥되어 작성되었다고 말하지만, 사실 저처럼 자바스클립이나 웹프로그래밍에 무지한 사람도 쉽게 알아들을 수 있는 가독성 높은 코드(드높은 구글의 프로그래머들이 만들었으니 오죽하겠습니까!?)들이니 너무 걱정하시지 마시길 바랍니다. 또한 Google Maps API의 경우에는 OOP를 따라 제작되어서 상당히 최적화된 Encapsulation과정을 거쳤기 때문에 여러분은 단시 사용자의 관점으로만 보면서 프로그래밍을 하실수 있습니다. 게다가 이 모든게 자바스클립트로 연결되기 때문에 달리 웹지향 스클립트 언어를 사용하실 수 없으신 분들도 HTML만으로 쉽게 접근하실 수 있습니다.

그럼 이제 본격적으로 Google Maps API의 시작인 모든 프로그래머의 친구 "Hello, World"를 만나보기로 하죠..

Code Link!


코드의 해설은 각 부분에 주석으로 달려있습니다.

네...실은 -_- html문서를 블로그에에 코드 그대로 쓰는게 너무나 힘들어서 귀차니즘에 링크해버렸습니다...죄송합니다. 하지만 이 문서의 주석은 참 열심히 달았답니다...(물론 쓸데없는 말이 85.9%이긴하지만요 ^^)

다시 본론으로 들어가서 여러분은 이 코드의 예제를 링크를 클릭하셔서 만나볼수 있습니다. 물론 제가 만든걸 부끄럽게 보여드릴수는 없고 Google Maps API 문서 페이지의 예제입니다. (원문에도 명시되어 있지만!! 가장 중요한건 Key값을 여러분만의 유일한 값으로 대입해야한다는 것입니다.!)

아! 그러고보니 키값을 얻는방법을 알려드리지 않았군요.
키 값은 바로 이 곳에서 얻을수 있는데요. 필요한건 여러분이 이 키값을 사용할 웹사이트의 상위 주소랍니다!(대체 구글아저씨들은 이걸로 뭘 하려하는 걸까요? 이것은 아마 API를 공개한 이유와 상충하지 않을까 싶기도 합니다.) 이 키값은 저 위의 코드 링크속에 표시된 부분에 집어 넣어주세요!!!

------------------------------------------------------------------

이런이런 이미 밤늦은 시간이 되어버렸네요...
단지 http://www.google.com/apis/maps/documentation/ 에서 3분이면 이해할 코드를 이렇게 장황하고 헛짓하며 설명해 놓는 제 자신이 웃겨보이기도 하지만 적어도 우리나라의 영어가 익숙하지 않고, 프로그래밍을 접해보시지 못한 분들에게는 아주아주 약간이나마 도움이 되길 기대하고 이리 잡다하게 적어봅니다.

그럼 전 내일 수업을 위해 숙면의 세계로 가야겠어요 ^^)//~
아참! 다음 시간에는 "구글맵 이동과 애니매이션"(무슨 소리인지는 모르겠지만 원문을 그대로!!)과 간단한 "이벤트 수신"를 공부해봅시다. 좋은 밤 되세요.

새학기의 프로젝트

from Info.log 2006/03/07 21:01
우리 학교 데이터베이스 교수님이신

변광준 교수님께서 이번 데이터베이스 팀프로젝트로

Mash up 기법을 사용한 웹페이지 제작을 내주셨다..

안그래도 평소 젬병인 웹인데다가

마땅하게 접하기도 힘든 새로운 패러다임인 Mash up때문에

변변찮은 한글 문서 하나 없는 실정이다...

이러면 안되지만 마음속에서...

"혹시 못하는거 아냐?"

라는 생각이 스물스물 기어나온다.

아 제발...움직여줘라 머리야...타올라라 근성아...


------------------------------------------------------------------
다음은 참고 할만한 Mash up을 적용한 웹사이트들이다

Virtual Places
A sophisticated mashup between mapping, and various web services...gadget style.
(Amazon, Alexa, FeedMap, Flickr, MapPoint, MSNSearch, VirtualEarth)


Weather Bonk
Rich mashup with live weather, forecasts, webcams, and more on a Google Map.
(Google Maps, WeatherBug, Yahoo Traffic, Yahoo Maps, Google AdWords, hostip.info, Yahoo Geocoding, NASA, NOAA Weather Service, Microsoft Virtual Earth)