2010-04-05 82 views
3

基本上我的问题是,我已经适应了一段代码在这里Bing地图Silverlight控件图钉结垢问题

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

这不正是我想要它做的发现,那就是扩大一些图钉图片根据地图的缩放级别。唯一的问题是,我已经调整了这个代码来运行bing地图silverlight控件(不像原始示例中的虚拟地球),现在图像缩放correclty,但它们被重新定位并且只有当我的缩放级别达到期望的位置时是最大的。任何想法为什么?帮助将不胜感激:)

下面

修改后的代码:

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); 

我假定它是与在Bing地图锚以不同的方式其UI元素。关于这方面的细节也非常有用。谢谢!

回答

1

尝试加入自己的固定大小的BitmapImage到地图上,而不是使用图钉类

+0

是的,工作,抱歉的前一篇文章。这只是为转换设置固定大小并相应地设置centerx和centery属性。感谢earthware :) – 2010-04-06 14:14:29

1

由于陶器的回应,我设法解决我的问题。这只是添加图像direclty(不涉及图钉类)的问题,添加固定大小并相应地设置缩放的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;