2015-09-25 59 views
0

我们正在开发一款使用VS 2012 Windows应用程序定位Windows 8.1的跟踪应用程序。GPS坚持单一来源

我们正在使用GeoCoordinateWatcher类。出于某种原因,似乎如果第一次修复是从一个wifi,然后你关闭了无线网络,应用程序不能得到一个卫星修复(观察者状态不返回数据)。它只能看到wifi位置。

如果第一次修复程序来自GPS卫星,似乎会出现同样的问题。

不知道这是硬件还是软件问题......但我需要观察者根据可用性使用两个源。

感谢有关此问题的任何见解。

以下是负责捕获GPS的代码部分。它呼吁一个定时器,每XX工作。

private string SendingData() 
    { 
     try 
     { 

      DataXML = ""; 
      string result = ""; 
      Write_Trace_File("SendingData: Watcher Status: " + watcher.Status.ToString()); 
      if (watcher.Status != GeoPositionStatus.Ready) 
      { 
       try 
       { 
        watcher.TryStart(true,TimeSpan.FromSeconds(10)); 
       } 
       catch (Exception exp) 
       { 
        Write_Trace_File(exp.Message); 
       } 
      } 
      string cur_long = ""; 
      string cur_lat = ""; 
      string cur_speed = ""; 
      if (watcher.Position.Location.IsUnknown) 
      { 
       Write_Trace_File("SendingData: GPS not captured yet."); 
       if (currlatitude.ToString() != "0.0" && currlatitude.ToString() != "" && currlatitude.ToString() != "0") 
       { 
        Write_Trace_File("SendingData:Using Cached GPS.GPS last captured at" + lastPosDate); 
        cur_long = currlongtitude.ToString(); 
        cur_lat = currlatitude.ToString(); 
        if (speed.ToString() != "0") 
        { 
         cur_speed = speed.ToString(); 
        } 


       } 
       else 
       { 
        Write_Trace_File("SendingData:No Cached GPS."); 
        return ""; 
       } 
      } 
      else 
      { 
       Write_Trace_File("SendingData:Using Captured GPS."); 
       cur_long = watcher.Position.Location.Longitude.ToString(); 
       cur_lat = watcher.Position.Location.Latitude.ToString(); 
       cur_speed = watcher.Position.Location.Speed.ToString(); 
      } 


    } 
+0

这是一个非常广泛的问题,确实有这方面的任何代码? –

+0

刚刚添加了负责获取GPS的部分代码。 –

回答

0

你有没有打过电话的

GeoCoordinateWatcher.Close() 

GeoCoordinateWatcher.Start() 

方法,看是否能踢它放回生活吗?

参考:https://msdn.microsoft.com/en-us/library/system.device.location.geocoordinatewatcher_methods(v=vs.110).aspx

+0

谢谢本。是的,我做了,但无济于事。我实际上必须启用/禁用整个Windows位置驱动程序才能切换源,或关闭并重新打开应用程序。我试图实例化一个新的观察者,如果旧观察者状态是没有数据,但也没有工作。 –