2010-04-05 5 views
3

В основном моя проблема заключается в том, что я уже приспособил кусок кода найден здесьBing Maps Silverlight управления проблемы масштабирования канцелярской

http://social.msdn.microsoft.com/Forums/en-US/vemapcontroldev/thread/62e70670-f306-4bb7-8684-549979af91c1

, который делает именно то, что я хочу, чтобы это сделать, то есть масштаб некоторые канцелярской кнопки изображения в соответствии с уровнем масштабирования карты. Единственная проблема заключается в том, что я адаптировал этот код для работы с бин-картами silverlight control (не виртуальной землей, как в исходном примере), а теперь корреляцией масштаба изображения, но они перемещаются и достигают желаемой позиции, когда мой уровень масштабирования является максимальным. Любая идея почему? Помощь будет весьма признателен :)

Модифицированный код ниже:

var layer = new MapLayer(); 
map.AddChild(layer); 

//Sydney 
layer.AddChild(new Pin 
{ 
    ImageSource = new BitmapImage(new Uri("pin.png", UriKind.Relative)), 
    MapInstance = map 
}, new Location(-33.86643, 151.2062), PositionMethod.Center); 

становится чем-то вроде

layer.AddChild(new Pin 
{ 
    ImageSource = new BitmapImage(new Uri("pin.png", UriKind.Relative)), 
    MapInstance = map 
}, new Location(-33.92485, 18.43883), PositionOrigin.BottomCenter); 

Я предполагаю, что это что-то делать с другим способом, в котором Бинг карты прикрепляет его UiElements. Подробная информация об этом также очень удобна. Спасибо!

ответ

1

попробуйте добавить свой собственный фиксированный размер BitmapImage на карту, а не с помощью класса канцелярской кнопки

+0

Да, работал, извините за предыдущий пост. Это было просто вопрос установки размера FIXED для преобразования и определения свойств центра и центрирования соответственно. Спасибо, земляное оборудование :) –

1

Благодаря ответ earthware, я сумел решить мою проблему. Это просто вопрос добавления образа direclty (нет класса pushpin), добавление к нему фиксированного размера и соответственно настройка свойств CenterX и CenterY масштабирования. Пример кода следующим образом:

image.Source = new BitmapImage(new Uri("pin.png", UriKind.Relative)); 
image.Stretch = System.Windows.Media.Stretch.None; 
image.Height = 152; 
image.Width = 116; 

layer.AddChild(image, new Location(-33.86643, 151.2062), PositionOrigin.BottomCenter); 
image.RenderTransform = scaleTr; 

scaleTr.CenterX = image.Width/2; //image is alligned bottom center (see above) 
scaleTr.CenterY = image.Height; 
0

Вот пример, который показывает, как Auto Scale Защелки с ZoomLevel карты, используя объект канцелярской кнопки (вместо объекта Image) и сохраняет их в правильном месте. Все с небольшой помощью пользовательского IValueConverter, ScaleTransform и немного привязки данных.

http://pietschsoft.com/post/2010/06/04/Resizing-and-Auto-Scaling-Pushpin-in-Bing-Maps-Silverlight.aspx

Смежные вопросы