Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 윈폰7
- 닷넷게시판만들기
- 서호주
- Perth
- 안치환
- swell season
- 안치환공연
- 안치환콘서트
- 닷넷공부법
- 서호주여행
- live8
- 백스트리트보이스
- 영화
- BSB
- 게시판페이징
- 닷넷게시판리스트
- 여행
- wp7
- asp
- 유용주
- ASP.NET
- 퍼스
- 닷넷DB연동
- 전라도여행
- 광야에서
- The Frames
- 웹프로그래밍
- 가족영화
- 김광석
- U2
Archives
- Today
- Total
새로운 시작, GuyV's lIfe sTyle.
윈폰7 GPS 에뮬레이터 예제 본문
몇 달 전에 MS에서 윈폰 에뮬레이터용 GPS 에뮬레이터를 Windows Phone Recipe 로 내놓았습니다.
GPS의 값을 가져오는 클래스인 System.Device.Location.GeoCoordinateWatcher 를 그대로 시뮬레이션 하여 사용할 수 있게 하는 라이브러리인데, 사용해보시면 꽤 쿨~ 한 것을 알 수 있을겁니다.
소스 자료와 설명 등 자세한 자료는 원문 포스팅을 참고해주시구요.
간단하게 이 에뮬레이터로 Google 맵 서비스 중 Static 맵을 이용해 3초마다 현 위치를 뿌려주는 샘플을 만들어보겠습니다.
dll 파일은 윈폰 라이브러리로 등록하시면 되구요. zip파일은 GPS 에뮬레이터라고 보시면 됩니다.
다시 말씀드리지만 소스 자료는 위의 링크에서 받으실 수 있습니다.
먼저 GPS 에뮬의 압축을 풀어서 실행을 해봅시다. GpsEmulator.exe 입니다.
wpf 어플이구요. WCF 서비스로 이 에뮬레이터에서 gps 좌표값을 제공합니다. 빙맵으로 화면을 이쁘게 꾸며놨네요.
첫 실행화면입니다. 대충 위치는 MS본사 같네요. -_-
여튼 여기서 맵에서 더블클릭을 해서 여기저기 라우트 포인트를 찍습니다.
그럼 이렇게 점이 찍혀 연결되고 좌측 라우트 리스트에 추가됩니다.
그리고 좌측 하단에 "Start"버튼을 누르면 상단 그림처럼 선을 따라 이동하면서 현재 화살표 위치의 위/경도 좌표를 뿌려줍니다.
이 좌표 자료를 윈폰 에뮬에서 받으면 됩니다.
이제 윈폰 개발툴을 실행시켜서 새 프로젝트를 만듭니다.
그리고 앞서 받은 GpsEmulatorClient.dll 파일을 참조 추가해줍니다.
윈폰의 디자인은 간단하게 Image 컨트롤 하나를 추가합니다. 기본 Grid에 대충 꽉 채우도록 하죠.
Image 컨트롤 이름은 위 그림처럼 staticMap 이라고 했습니다.
이제 바로 code 로 들어갑니다. (MainPage.xaml.cs)
말씀드렸듯이, 참조 추가한 라이브러리는 기존 실제 장치용이랑 클래스,메서드,속성명 모두 100% 똑같습니다. GpsEmulatorClient 네임스페이스의 GeoCoordinateWatcher 클래스로 사용해야 됩니다. :)
코드에서 네임스페이스 참조를 먼저 해주시구요.
using System.Windows.Media.Imaging;
using System.Windows.Threading;
using System.Windows.Threading;
맵이미지를 계속 로딩할 수는 없으니, 데이터 변경이 있을 때 DispatherTimer를 이용해 3초마다 이미지를 로드해올겁니다. 해외서버라 맵이미지 다운로드 속도도 좀 걸릴 것 같네요.
그리고 클래스 멤버 변수로 '3초마다'에 관련된 변수를 선언합니다.
public partial class MainPage : PhoneApplicationPage
{
short ticks = 0;
short nowTicks = 0;
...
{
short ticks = 0;
short nowTicks = 0;
...
MainPage 생성자에서 로딩 때 해야될 것을 하도록 하죠.
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(3);
timer.Tick += new EventHandler((s, e) =>
{
ticks++;
});
timer.Interval = TimeSpan.FromSeconds(3);
timer.Tick += new EventHandler((s, e) =>
{
ticks++;
});
timer.Start();
GpsEmulatorClient.GeoCoordinateWatcher watcher = new GpsEmulatorClient.GeoCoordinateWatcher();
watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>
(watcher_PositionChanged);
watcher.Start();
3초마다 타이머가 ticks를 올릴겁니다. 좌표값이 변화가 있을 때 이 값에 따라 맵 자료를 불러올겁니다. 그리고 GPS는 watcher 라는 이름으로 Positionchanged 이벤트를 만들고 켜도록 하죠.
다음은 watcher 이벤트입니다.
void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
if (nowTicks == 0) nowTicks = ticks;
ApplicationTitle.Text = string.Format("{0:#.####} / {1:#.####}",
e.Position.Location.Latitude,
e.Position.Location.Longitude);
e.Position.Location.Latitude,
e.Position.Location.Longitude);
if (!nowTicks.Equals(0))
{
{
staticMap.Source = new BitmapImage(new Uri(
string.Format("http://maps.google.com/maps/api/staticmap?center={0},{1}&zoom=12&size={2}x{3}&sensor=false",
e.Position.Location.Latitude,
e.Position.Location.Longitude,
staticMap.Width,
staticMap.Height), UriKind.Absolute
));
string.Format("http://maps.google.com/maps/api/staticmap?center={0},{1}&zoom=12&size={2}x{3}&sensor=false",
e.Position.Location.Latitude,
e.Position.Location.Longitude,
staticMap.Width,
staticMap.Height), UriKind.Absolute
));
nowTicks = ticks = 0;
}
http://maps.google.com/maps/api/staticmap?center={0},{1}&zoom=12&size={2}x{3}&sensor=false
이 주소가 해당 위도,경도 위치 이미지를 width, height 크기로 가져오는 구글 정적 맵입니다.
GPS 에뮬레이터에서 주는 값을 받고 있으니 그대로 넣어주면 되겠죠.
보셨다시피 이 GPS 에뮬레이터를 이용하면 실제 폰에 GPS가 달려서 작동하듯 테스트를 할 수 있습니다. 꽤 유용한 것 같습니다. 배포시에는 생성자만 바꾸어주면 되겠네요. ^^
간단한 예제이지만 시작하시는데는 별 문제 없으실 듯 싶습니다.
혹시 wpf 에뮬이 잘 안돌아가시면 빙맵 apikey 를 받으셔야 할 수도 있습니다.
(Live ID가 회원가입(로그인)이 필요하며 쉽습니다. http://www.bingmapsportal.com/)
다음 그림처럼 API 메뉴에서 키를 등록하세요.
그럼~ 즐프하세요.
반응형
'ⓦindows Phone 7 > Development' 카테고리의 다른 글
윈폰7 트라이얼 앱 구현 및 예제 (0) | 2011.05.06 |
---|---|
Theme Resources for Windows Phone (0) | 2011.04.19 |
윈폰 7.0 웹 UserAgent 열거 (0) | 2011.03.11 |
윈폰7 개발툴 wm_web.exe 호환성 오류 (0) | 2010.06.23 |
실버라잇, 윈폰7용 게임 Shuffleboard (0) | 2010.06.22 |
Comments