2012-02-09 15 views
1

私は私の経度を取得し、Googleからのlattitudeよ:私はこの結果を使って自分のマップにマーカーを追加したい経度と緯度の文字列をdoubleに変換するにはどうすればよいですか?

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

問題は私のマーカーではないということです表示されます。ダブルスが正しいフォーマットで提供されていないからだと思う。私はドットなしで、47731624を取得し、二重に値4.7731624を変換する場合

200,4,51.8248681,4.7731624

:上記のリンクの結果はこれです。

私の質問は、どのように文字列を適切な場所にあるドットでダブルに変換するのですか?

+0

を含む文字列を渡します/documentation/geocoding/v2/index.html) - あなたはおそらくそれを期待しすぎる 長いです。おそらく[現在のバージョンのジオコーダ](http://code.google.com/apis/maps/documentation/geocoding/)を代わりに使用してください。 – djd

答えて

16

チャンスは、それはあなたの文化が原因だている - それは、この場合には、あなたがインバリアントカルチャをしたいように聞こえる:

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

(あなたがうまく優雅にそれが有効なのではないという可能性を処理するためにdouble.TryParseを使用することもできます値。)

+0

はい、TryParseを使用しますが、無効な緯度/経度の値をdoubleに初期化します。これにより、失敗したかどうかがわかります。 – twilson

+1

@twilson: 'TryParse'の全体点は、* return *値が失敗したかどうかを知らせることです。 'out'パラメータに使用するものの以前の値は無関係です - とにかく上書きされます。 –

+0

一時的に私を逃した何らかの理由で私の悪い私は悪い:Pああ、狂気。 – twilson

0

だけDouble.Parseを(使用)して、[非推奨API](http://code.google.com/apis/mapsを使用している緯度/長いCOORD

+1

'Convert.ToDouble'はすでに' double.Parse'を使用していますが、デフォルトのカルチャを使用します。小数点の区切りが "、" "。"の区切り記号それは私が起こっていると思われるものです... –

+0

ありがとうジョン!私は、オランダの小数点区切り記号が北米の私桁区切り記号と異なっていたことに気付かなかった。頭をもう一度ありがとう! – dmarges

関連する問題