привязка lat / long к карте из парсера xml wp7 - PullRequest
0 голосов
/ 01 августа 2011

Мне было дано задание проанализировать xml с веб-сервера и получить информацию о пользователе, включая псевдоним / длинный псевдоним и изображения, а затем связать их с картой (их много). Я использую WebClient и XDocument для работы с парсингом. Каков тип lat / long и как их привязать к карте?

        void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        using (var reader = new StreamReader(e.Result))
        {
            //  string[] _elements = { "one", "two", "three" }; 
            int[] counter = { 1 };
            string s = reader.ReadToEnd();
            Stream str = e.Result;
            str.Position = 0;
            XDocument xdoc = XDocument.Load(str);

            var data = from query in xdoc.Descendants("position")
                       select new mapping
                       {
                  //         color = counter[0]++,
                           album = (string)query.Element("album"),
                           track = (string)query.Element("track"),
                           artist = (string)query.Element("artist"),
                           nickname = (string)query.Element("user_info").Element("nickname"),
                           pos_lat = (GeoCoordinate)query.Element("lat"),

                       };
            //   lb1.ItemsSource = data;   
    //        listbox1.ItemsSource = data;
        }
    }


    public class mapping
    {
        public int index { get; set; }
        public string album { get; set; }
        public string track { get; set; }
        public string artist { get; set; }
        public GeoCoordinate pos_lat { get; set; }
        public GeoCoordinate pos_lon { get; set; }
        public string nickname { get; set; }
    }


<Microsoft_Phone_Controls_Maps:Map Height="427" HorizontalAlignment="Left" Margin="12,6,0,0" Name="map1" VerticalAlignment="Top" Width="438" />

1 Ответ

1 голос
/ 01 августа 2011

Я думаю, вы неправильно поняли, что GeoCoordinate для. GeoCoordinate - это координата, представляющая широту, долготу и некоторые другие свойства географического местоположения .

Значение (s, которое вы читаете, является double,которые представляют широту или долготу. Вы просто не можете привести double к GeoCoordinate, и, конечно, не имеет смысла иметь отдельные GeoCoordinate для широты и долготы.

Так что вам нужно просто считать широту и долготу как двойные, а затем создать GeoCoordinate на основе этого.

Использовать Double.TryParse для обработкипреобразование (когда вы считываете все значения как string изначально)

...