我将 Sim548c
的GPS与 Google map API
一起使用,当我将其连接到
我的C#代码它给出了距离Exit位置大约1KM的错误位置,但是当我使用下面的software
时,它给出了10m的出口位置我使用了以下gps cordinats代码并将其传递给网络broswers。
if (s.Contains("$GPRMC"))
{
latlon = s.Split('*');
int i=0;
while (!latlon[i].Contains("GPRMC"))
{
i++;
}
//latlon = latlon[i].Split(',');
if (latlon[i].Contains(",A,"))
{
latlon = latlon[i].Split(',');
lat = latlon[3];
lon = latlon[5];
latt = double.Parse(lat.Substring(0,2));
latt += double.Parse(lat.Substring(2, 2)) / 60.0;
latt += double.Parse(lat.Substring(5)) / 3600.0/100.0;
lonn = double.Parse(lon.Substring(0,3));
lonn += double.Parse(lon.Substring(3, 2))/60.0;
lonn += double.Parse(lon.Substring(6))/3600.0/100.0;
//richTextBox1.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate() { richTextBox1.AppendText("Write\n"); }));
richTextBox2.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate()
{
richTextBox2.AppendText(lonn.ToString()+","+latt.ToString()+"\n");
}));
label1.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate()
{
label1.Content = lon;
}));
label2.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate()
{
label2.Content = lat;
}));
Thread.Sleep(1000);
webBrowser1.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate()
{
try
{
webBrowser1.InvokeScript("animate", latt.ToString(), lonn.ToString());
}
catch { }
})
);
}
答案 0 :(得分:1)
我认为问题在于您将秒转换为度
latt += double.Parse(lat.Substring(5)) / 3600.0/100.0;
您只需要将'秒'部分除以3600
latt += double.Parse(lat.Substring(5)) / 3600.0;
lonn += double.Parse(lon.Substring(6)) / 3600.0;
另一件事你可能已经知道,如果南侧是纬度值,那么纬度值是负值,西侧是经度值。否则,您的位置可能会出现在地球的错误一侧。