如何将经度和纬度字符串转换为双精度?
我得到我的经度和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
,没有点。
所以我的问题是,如何将字符串转换为正确位置的双精度型的字符串?
它就有可能是由于你的文化 - 这听起来像在这种情况下,你要不变文化:
double longitude = double.Parse(text, CultureInfo.InvariantCulture);
(您可能需要使用double.TryParse
优雅地处理它不是一个有效的可能性值。)
只是使用Double.Parse()和传递包含纬度/经度坐标
'Convert.ToDouble'已经使用'double.Parse' - 但它会使用默认的文化,如果它有一个小数点分隔符“,”和数千分隔符“。”这是我怀疑正在发生的事情...... – 2012-02-09 22:16:47
谢谢乔恩!我没有意识到荷兰的小数分隔符与北美的不同。再次感谢您的领导! – dmarges 2012-02-09 22:24:41
您使用的[弃用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