2011-01-14 8 views
2

MSDN에서 나왔던 Windows Phone 7 용 GPS 클래스가 있습니다.GPS 클래스 사용 다른 클래스의 이벤트

public class GetGPS : GeoCoordinateWatcher 
    { 
     GeoCoordinateWatcher watcher; 
     public float longitude { get; set; } 

     public GetGPS() 
     { 
      watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); 
      watcher.MovementThreshold = 20.0; 
      watcher.PositionChanged += watcher_PositionChanged; 
      watcher.StatusChanged += this.watcher_StatusChanged; 
      watcher.Start(); 
     } 

     public void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e) 
     { 
      switch (e.Status) 
      { 
       case GeoPositionStatus.Initializing: 
        break; 
       case GeoPositionStatus.Ready: 
        //plingpling 
        break; 
       case GeoPositionStatus.Disabled: 
        // location is unsupported on this device 
        break; 
       case GeoPositionStatus.NoData: 
        //pling 
        break; 
      } 
     } 
     public void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
     { 
      Debug.WriteLine(String.Format("***POSITION: {0}, {1}", e.Position.Location.Latitude, e.Position.Location.Longitude)); 
      Helfer.myLocation = e.Position.Location; 
     } 

    } 

내 프로그램에서이 클래스를 사용하려고하면 나는 결코 내가있는 실제 위치 얻을 - 내가 책임 비동기 실행을 저장할 수있는 것 같아요 - 내가 프로그램 후 그 위치가 몇 시간 동안 실행 된 수를 그에 대한.

그러나 내가 GPS를 필요로하는 클래스에서 직접 GetGPS 생성자를 구현할 때 (또한 해당 클래스의 와쳐를 정의 할 때 ...) 내가 원하는 것을 얻습니다. 그러나 GPS 위치를 가져야하므로 내 프로그램의 일부 부분은 그 기능을 클래스 (DRY-Principle)에 아웃소싱하는 것이 가장 좋을 것이라고 생각했습니다.

어떻게 구현합니까? 또는 StatusChanged 및 PositionChanged 객체를 준수하는 "test"클래스에서 GetGPS 인스턴스를 만들 수 있습니까?

그 클래스에서 이벤트 리스너를 만들 수 있다면 ... 원하는 기능을 얻을 수 있습니다 :).

+0

'Helfer.myLocation'이 정의되지 않았기 때문에 이것이 코드의 하위 집합이라고 가정합니다. – Nate

+0

예, Helfer.MyLocation은 조잡합니다. 일단 GPS 수정이 있으면 지형을 보유합니다. – theXs

+2

왜 GeoCoordinateWatcher에서 GetGPS 하위 클래스를 사용합니까? 점은 무엇인가? – Pedro

답변

1

응용 프로그램을 실행하는 동안 GPS 위치가 자주 바뀌고 실시간 업데이트가 필요한 경우, 내가 할 일은 CurrentLocation이라는 공용 속성을 클래스에 추가하고 해당 값을 PositionChanged 이벤트. 그런 다음 GetGPS 클래스의 인스턴스에 대한 전역 참조를 유지하고 위치에 액세스해야 할 경우 CurrentLocation 속성을 사용합니다.

+0

하지만 내가 할 때 누군가가 이미 GPS 위치를 사용하는 응용 프로그램의 일부에있는 동안 발생하는 위치 변경을 얻을 수 없습니다. – theXs

+0

예, 할 수 있습니다. 왜냐하면'PositionChanged' 이벤트는'watcher.Stop();'이 호출 될 때까지'Helfer.myLocation'을 계속 갱신 할 것이기 때문입니다. 따라서'Helfer.myLocation'의 값을 확인할 때마다 가장 최신의 GPS 위치가됩니다. – Nate

관련 문제