当影响经度、纬度到位置时,输入字符串的格式不正确
Input string was not in a correct format when affecting longitude,lattitude to a Location
我正在按照本教程 enter link description here 根据此 Web 服务的经度和纬度向地图中的每个位置添加图标:(json 格式)
{
success: 1,
total: 2,
locals: [
{
id_local: "59",
local_longi: "20",
local_latit: "25894"
},
{
id_local: "60",
local_longi: "10.33699",
local_latit: "25.997745"
}
]
}
这是我的代码:
private async void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
{
await
this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(
async () =>
{
UriS = "MyURL";
var http = new HttpClient();
http.MaxResponseContentBufferSize =Int32.MaxValue;
var response = await http.GetStringAsync(UriS);
var rootObject = JsonConvert.DeserializeObject<NvBarberry.Models.RootObject>(response);
for(int i=0;i< int.Parse(rootObject.total); i++)
{
//Get the current location
Location[] location = new Location[2];
location[i] = new Location(double.Parse(rootObject.locals[i].local_latit), double.Parse(rootObject.locals[i].local_longi)); //I get the error here
//Update the position of the GPS pushpin
MapLayer.SetPosition(GpsIcon, location[i]);
//Set the radius of the Accuracy Circle
GpsIcon.SetRadius(args.Position.Coordinate.Accuracy);
//Make GPS pushpin visible
GpsIcon.Visibility = Windows.UI.Xaml.Visibility.Visible;
//Update the map view to the current GPS location
MyMap.SetView(location[i], 17);
}
}));
}
我收到这个错误:
Input string was not in a correct format
在这一行:
location[i] = new Location(double.Parse(rootObject.locals[i].local_latit), double.Parse(rootObject.locals[i].local_longi));
如果这有帮助,这是调试的结果:
所以请问我怎样才能更正我的代码,根据它的位置放置图标
感谢帮助
调试并检查rootObject.locals[i].local_latit
和rootObject.locals[i].local_longi
的错误。如果它们最终为 null 而不是声明的字符串,则会引发此错误。
我在 MSDN 上做了一些挖掘。试试这个:
location[i] = new Location(
double.Parse(
rootObject.locals[i].local_latit,
System.Globalization.NumberStyles.Float
),
double.Parse(
rootObject.locals[i].local_longi,
System.Globalization.NumberStyles.Float
)
);
这是 MSDN link:https://msdn.microsoft.com/en-us/library/system.globalization.numberstyles(v=vs.110).aspx
我正在按照本教程 enter link description here 根据此 Web 服务的经度和纬度向地图中的每个位置添加图标:(json 格式)
{
success: 1,
total: 2,
locals: [
{
id_local: "59",
local_longi: "20",
local_latit: "25894"
},
{
id_local: "60",
local_longi: "10.33699",
local_latit: "25.997745"
}
]
}
这是我的代码:
private async void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
{
await
this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(
async () =>
{
UriS = "MyURL";
var http = new HttpClient();
http.MaxResponseContentBufferSize =Int32.MaxValue;
var response = await http.GetStringAsync(UriS);
var rootObject = JsonConvert.DeserializeObject<NvBarberry.Models.RootObject>(response);
for(int i=0;i< int.Parse(rootObject.total); i++)
{
//Get the current location
Location[] location = new Location[2];
location[i] = new Location(double.Parse(rootObject.locals[i].local_latit), double.Parse(rootObject.locals[i].local_longi)); //I get the error here
//Update the position of the GPS pushpin
MapLayer.SetPosition(GpsIcon, location[i]);
//Set the radius of the Accuracy Circle
GpsIcon.SetRadius(args.Position.Coordinate.Accuracy);
//Make GPS pushpin visible
GpsIcon.Visibility = Windows.UI.Xaml.Visibility.Visible;
//Update the map view to the current GPS location
MyMap.SetView(location[i], 17);
}
}));
}
我收到这个错误:
Input string was not in a correct format
在这一行:
location[i] = new Location(double.Parse(rootObject.locals[i].local_latit), double.Parse(rootObject.locals[i].local_longi));
如果这有帮助,这是调试的结果:
所以请问我怎样才能更正我的代码,根据它的位置放置图标 感谢帮助
调试并检查rootObject.locals[i].local_latit
和rootObject.locals[i].local_longi
的错误。如果它们最终为 null 而不是声明的字符串,则会引发此错误。
我在 MSDN 上做了一些挖掘。试试这个:
location[i] = new Location(
double.Parse(
rootObject.locals[i].local_latit,
System.Globalization.NumberStyles.Float
),
double.Parse(
rootObject.locals[i].local_longi,
System.Globalization.NumberStyles.Float
)
);
这是 MSDN link:https://msdn.microsoft.com/en-us/library/system.globalization.numberstyles(v=vs.110).aspx