如何在WP8地图上创建自动缩放图像

时间:2013-02-10 11:53:50

标签: c# image maps windows-phone-8

我正在尝试将多个图钉添加到地图中,当你缩小到足够的时候会消失,使图钉变得很小,以至于它们不再渲染了。

我设法通过以下代码实现此效果:

MapPolygon shape = new MapPolygon();
GeoCoordinateCollection boundingLocations = CreateCircle(geoCoordinate, 0.1);
shape.Path = boundingLocations;
shape.FillColor = Color.FromArgb(0x55, 0xFF, 0xFF, 0x00);
shape.StrokeColor = Color.FromArgb(0xFF, 0xFF, 0x00, 0xFF);
shape.StrokeThickness = 4;
mapToDrawOn.MapElements.Add(shape);

但我真正想做的是用自定义图像填充多边形。图像必须放在地图的特定点,并将其大小与缩放级别相关联。 (就像上面的例子一样)这是我试图使用的代码:

MapLayer layer = new MapLayer();
MapOverlay overlay = new MapOverlay();
Polygon polygon = new Polygon();
polygon.Points.Add(new Point(0, 0));
polygon.Points.Add(new Point(0, 75));
polygon.Points.Add(new Point(25, 0)); 
BitmapImage arrImg = 
    new BitmapImage(new Uri("/Images/arrow.png", UriKind.RelativeOrAbsolute));
ImageBrush imgBrush = new ImageBrush();
imgBrush.ImageSource = arrImg;
polygon.Fill = imgBrush;
overlay.Content = polygon;
//geoCoordinate is the argument of a method
overlay.GeoCoordinate = geoCoordinate;
layer.Add(overlay);
mapToDrawOn.Layers.Add(layer);

它不起作用。图像出现在世界的特定点,但是当我缩小时,图像保持其大小。我认为这个问题是由于缺少一些限制多边形的Rectangle引起的,但我找不到任何东西。请帮忙。

1 个答案:

答案 0 :(得分:2)

这不是WP8 Maps支持的功能。这个想法是,一旦将一个项目添加到Map.Layers,它就不会通过缩放重新缩放,以创建一致的外观和感觉。有些项目会调整大小,例如Map.MapElements Polylines和Landmarks,但这些项目不适用于Image。

如果您希望缩放项目,则必须注册Map.ZoomLevelChanged并以编程方式更改项目的缩放比例。

如果您有兴趣在将来的版本中看到这一点,请在您的用例中填写wpdev uservoice建议,以及为什么您有兴趣这样做。