2012-02-09 247 views
1

我得到我的經度和lattitude從谷歌:如何將經度和緯度字符串轉換爲雙精度?

http://maps.google.com/maps/geo?q=Sliedrecht,%20Netherlands&output=csv&oe=utf8&sensor=false

我想一個標記添加到使用我的地圖這個結果:

 if (coordinates.Length == 4 && coordinates[0] == "200") 
     { 
      var overlay = new GMapOverlay(mapexplr, "overlayTwo"); 

      overlay.Markers.Add(new GMapMarkerGoogleGreen(new PointLatLng(Convert.ToDouble(coordinates[2]), Convert.ToDouble(coordinates[3])))); 
      mapexplr.Overlays.Add(overlay); 
     } 

的問題是,我的標記不是顯示。我認爲這是因爲雙打沒有以正確的格式提供。上面的鏈接的結果是這樣的:

200,4,51.8248681,4.7731624

當我4.7731624值轉換爲雙我得到47731624,沒有點。

所以我的問題是,如何將字符串轉換爲正確位置的雙精度型的字符串?

+0

您使用的[棄用API](字符串http://code.google.com/apis/maps /documentation/geocoding/v2/index.html) - 所以你可能不能指望它也能工作 長。您應該使用[當前版本的地理編碼器](http://code.google.com/apis/maps/documentation/geocoding/)。 – djd 2012-02-10 02:13:23

回答

16

它就有可能是由於你的文化 - 這聽起來像在這種情況下,你要不變文化:

double longitude = double.Parse(text, CultureInfo.InvariantCulture); 

(您可能需要使用double.TryParse優雅地處理它不是一個有效的可能性值。)

+0

是的,請使用TryParse,但將double初始化爲無效的緯度/經度值,以便知道它是否失敗。 – twilson 2012-02-09 22:09:31

+1

@twilson:'TryParse'的重點在於* return *值告訴你它是否失敗。無論您用於「out」參數的以前的值是不相關的 - 它都會被覆蓋。 – 2012-02-09 22:10:37

+0

哎呀,我的壞,由於某種原因,暫時逃脫我:P哦瘋了。 – twilson 2012-02-09 22:13:08

0

只是使用Double.Parse()和傳遞包含緯度/經度座標

+1

'Convert.ToDouble'已經使用'double.Parse' - 但它會使用默認的文化,如果它有一個小數點分隔符「,」和數千分隔符「。」這是我懷疑正在發生的事情...... – 2012-02-09 22:16:47

+0

謝謝喬恩!我沒有意識到荷蘭的小數分隔符與北美的不同。再次感謝您的領導! – dmarges 2012-02-09 22:24:41