GeoCoordinateWatcher does not fire PositionChanged/StatusChanged events

1121
0
12-11-2012 10:02 AM
Labels (1)
sirishapolsapalli
New Contributor
Hello:

I have been using Garmin GPS 18x USB device to track location with in a WPF application using the System.Device.Location.GeoCoordinateWatcher object.

For the last couple of weeks PositionChanged and StatusChanged events stopped firing recently. Nothing I do make the events fire. They do not fire even when I move the GPS.

I am using Windows 7. When I look at the GeoCoordinateWatcher status it says "NoData" and all the values for the GeoCoordinateWatcher.Position is "NaN".

Any help is greatly appreciated.

Here is the code which I am using to track the GPS position.

void _map_Loaded(object sender, RoutedEventArgs e)

{

System.Device.Location.
GeoCoordinateWatcher geowatcher = new System.Device.Location.GeoCoordinateWatcher(GeoPositionAccuracy.High);

geowatcher.PositionChanged +=
new System.EventHandler<GeoPositionChangedEventArgs<System.Device.Location.GeoCoordinate>>(geowatcher_PositionChanged);

geowatcher.StatusChanged +=


new EventHandler<GeoPositionStatusChangedEventArgs>(geowatcher_StatusChanged);

geowatcher.Start();

}

void geowatcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)

{

if (e.Status == GeoPositionStatus.Ready)

{

}

string statuschange = e.Status.ToString();

}

void geowatcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)

{

GraphicsLayer gps = this._map.Layers["gpsLayer"] as GraphicsLayer;

if (gps == null) //First Time. Create layer

{

gps =


new GraphicsLayer() { ID = "GPSLYR" };

_map.Layers.Add(gps);

Graphic g = new Graphic() { Symbol = new SimpleMarkerSymbol() };

gps.Graphics.Add(g);

}
var coord = e.Position.Location;
//The course value must be between 0.0 and 360.0, and Double.NaN if the heading is not defined.
double course = e.Position.Location.Course;
MapPoint p = new MapPoint(coord.Longitude, coord.Latitude);

txtLat.Text = coord.Latitude.ToString();

txtLong.Text = coord.Longitude.ToString();

txtCourse.Text = course.ToString();
// Project point to Map???s spatial reference, use ESRI.ArcGIS.Client.Projection.WebMercator or Geometry Service

ESRI.ArcGIS.Client.Projection.

WebMercator mercator = new ESRI.ArcGIS.Client.Projection.WebMercator();
MapPoint geogCenterPoint = null;

geogCenterPoint = mercator.ToGeographic(p)


as MapPoint;



gps.Graphics[0].Geometry = geogCenterPoint;

}


Thank you,

Sirisha.
0 Kudos
0 Replies