yandexmobile / yandexmapkit-wp

Yandex Map Kit for Windows
17 stars 2 forks source link

Свойство ymc:MapLayer.Alignment для PushPin #7

Open AlexeiIgorevich opened 11 years ago

AlexeiIgorevich commented 11 years ago

Свойство ymc:MapLayer.Alignment корректно устанавливает только значение «BottomCenter», при установке других значений, например «BottomLeft», контент «привязывается» к левому верхнму углу. В значение «BotttomLeft» - ошибка три буквы «t».

   <ymc:MapLayer>
            <ymc:MapItemsControl x:Name="mapItemsControl" ItemsSource="{Binding Points}">
                <ymc:MapItemsControl.ItemTemplate>
                    <DataTemplate>
                        <ymc:PushPin 
                            ymc:MapLayer.Location="{Binding Position}"
                            State="Expanded"
                            Template="{StaticResource PinTemplate}"
                            ymc:MapLayer.Alignment="BotttomLeft"
                            CacheMode="BitmapCache"
                            ymc:PushPinManagerHelper.GroupKeys="All"
                            >
                          </ymc:PushPin>
                    </DataTemplate>
                </ymc:MapItemsControl.ItemTemplate>
            </ymc:MapItemsControl>
        </ymc:MapLayer>
kzaikin commented 11 years ago

Сейчас работают TopCenter, Center, BottomCenter. Если задано любое другое значение, привязываем верхний левый угол.

В качестве временного решения вы можете воспользоваться свойством MapLayer.PositionOffsetProperty, которое позволяет задать отступ (в том числе отрицательный).

kzaikin commented 11 years ago

Обработку остальных значений выравнивания запланировали

AlexeiIgorevich commented 11 years ago

Спасибо за ответ. Не совсем понял, как использовать PositionOffset, пример был бы очень кстати. P.S. есть ли возможность локализовать карту, т.е. выдавать названия на английском языке?

kzaikin commented 11 years ago

Задавайте его одновременно с Location, чтобы сдвинуть ваш контрол на N пикселей

Если задать у YourControl PosıtionOffset в размере (-YourControl.ActualWidth, -YourControl.ActualHeight), то YourControl будет пришпилен к карте правым нижним углом

kzaikin commented 11 years ago

Локализация карты пока не поддерживается

AlexeiIgorevich commented 11 years ago

К сожалению, PosıtionOffset не решает проблему не корректно работающего PushPinContentVisibilityBehavior(отступ учитывается в размере контрола), более того появляется весьма не приятный «скачок», отсутствующей при «выравнивании» при помощи margin.

kzaikin commented 11 years ago

Можно подробней про "проблему некорректно работающего PushPinContentVisibilityBehavior"? Возможно стоит завести отдельный вопрос

AlexeiIgorevich commented 11 years ago

Я не могу назвать это ошибкой, скорее не совсем нормальное поведение: если для контрола задан отступ (не важно каким способом) PushPinContentVisibilityBehavior учитывает его при выравнивании элемента на экране, т.е. при нажатии на маркер ВьюПорт сдвигается больше чем надо или вообще, сдвигается в другую сторону, в зависимости от того в какой части экрана располагается маркер.