locked
Карта, Pushpin, binding RRS feed

  • Вопрос

  • Доброго времени суток.

    Нужно выводить pushpin с координатами из бд на карту bing. Следующий код выдает ошибку:

    <map:Pushpin Location="{Binding Location}" Content="{Binding Name}"/>

    Опытным путем выяснил, что разметке не нравится Binding Location. При переходе на страницу с картой вылезает ошибка "XamlParseException произошло" без описания. Данные хранятся в формате string - например,  "46.353918,48.035032".

    При этом если ввести напрямую, то все работает:

    <map:Pushpin Location="46.353918,48.035032" Content="{Binding Name}"/>
    Подскажите, как быть? Если конвертировать данные, то как?



    • Изменено Fat.Hansmer 19 мая 2013 г. 21:10
    19 мая 2013 г. 21:05

Ответы

  • Посмотрите пример здесь: Bing Maps. Стилизация Pushpin. Это для W8, но по аналогии можно сделать и для WP8.
    • Помечено в качестве ответа Fat.Hansmer 20 мая 2013 г. 14:22
    20 мая 2013 г. 10:18
  • За ночь немного разобрался. Карта требовала данных в формате GeoCoordinate. Нашел в сети метод парсинга и добавил IValueConverter:

    public class CoordConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string input = (string)value; if (String.IsNullOrEmpty(input))
    {
    throw new ArgumentException("input");
    }

    if (input == "Unknown")
    {
    return GeoCoordinate.Unknown;
    }

    string[] parts = input.Split(','); if (parts.Length != 2) { throw new ArgumentException("Invalid format"); } double latitude = Double.Parse(parts[0], CultureInfo.InvariantCulture); double longitude = Double.Parse(parts[1], CultureInfo.InvariantCulture); return new GeoCoordinate(latitude, longitude); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return null; } }

    Теперь работает.

    • Помечено в качестве ответа Fat.Hansmer 20 мая 2013 г. 14:22
    20 мая 2013 г. 14:22

Все ответы

  • Посмотрите пример здесь: Bing Maps. Стилизация Pushpin. Это для W8, но по аналогии можно сделать и для WP8.
    • Помечено в качестве ответа Fat.Hansmer 20 мая 2013 г. 14:22
    20 мая 2013 г. 10:18
  • За ночь немного разобрался. Карта требовала данных в формате GeoCoordinate. Нашел в сети метод парсинга и добавил IValueConverter:

    public class CoordConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string input = (string)value; if (String.IsNullOrEmpty(input))
    {
    throw new ArgumentException("input");
    }

    if (input == "Unknown")
    {
    return GeoCoordinate.Unknown;
    }

    string[] parts = input.Split(','); if (parts.Length != 2) { throw new ArgumentException("Invalid format"); } double latitude = Double.Parse(parts[0], CultureInfo.InvariantCulture); double longitude = Double.Parse(parts[1], CultureInfo.InvariantCulture); return new GeoCoordinate(latitude, longitude); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return null; } }

    Теперь работает.

    • Помечено в качестве ответа Fat.Hansmer 20 мая 2013 г. 14:22
    20 мая 2013 г. 14:22