2016-01-20 99 views
1

我正在按照本教程enter link description here的规定,根据地图中的经度和纬度将图标添加到地图中的每个位置:(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)); 

如果这能帮助,这是调试的结果:

enter image description here

所以请我怎么能纠正我的代码,根据其位置 把图标感谢您的帮助

回答

1

我在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链接:https://msdn.microsoft.com/en-us/library/system.globalization.numberstyles(v=vs.110).aspx

+0

感谢您的答复,我解决了这个错误通过将我的变量转换为模型类的双打:) – user3821206

2

调试并检查rootObject.locals[i].local_latitrootObject.locals[i].local_longi出现错误。如果它们最终变为null而不是声明的字符串,它会抛出这个错误。

+0

感谢LeChosenOne您的回复,但在调试的时候我已经verifried是rootObject.locals [I] .local_latit和rootObject.locals [I] .local_longi containe字符串值 – user3821206