0

私はのGPSを使用していSim548cますGoogle map APIが、C#コードに接続すると、出口の場所から約1KM離れた間違った場所が表示されますが、以下を使用softwareすると、10m以内の出口の場所が表示されます。 gpscordinatsのコードセットをWebブラウザに渡します。

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 { }
                    })
                    );

            }
4

1 に答える 1

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;

南側が緯度の値が負で、西側が経度の値が負の場合、もう1つご存知かもしれません。そうしないと、現在地が地球の反対側に表示される可能性があります。

于 2012-05-06T06:50:49.710 に答える