c# - 如何在 WP8 map 上创建自动缩放图像

标签 c# image maps windows-phone-8

我正在尝试向 map 添加多个图钉,当您缩小到足够大时,图钉就会消失,以使图钉变得如此小,以至于不再渲染它们。

我设法用以下代码实现了这种效果:

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

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

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

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

最佳答案

这不是 WP8 map 支持的功能。这个想法是,一旦将项目添加到 Map.Layers 中,它就不会通过缩放来重新缩放以创建一致的外观和感觉。有些项目确实会调整大小,例如 Map.MapElements 折线和地标,但这些项目不适用于图像。

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

如果您有兴趣在未来版本中看到这一点,请填写 wpdev uservoice对您的用例的建议以及您对此感兴趣的原因。

关于c# - 如何在 WP8 map 上创建自动缩放图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14797456/

相关文章:

c++ - 我如何将这个文件读入 map C++

android - 在 map 中定位我的位置的问题

c# - 有没有办法让 C# 使用 MBean 通过 JMX 与 Java 服务器通信?

c# - WPF:禁用有界 ItemsControl 中的项目

c# - 适用于 Windows Phone 8 的多语言应用程序工具包,使用代码 C#

php - 创建上传的最大 x x y 图像,保持比例并居中

delphi - 混淆图像

iPhone SDK : move image around with the accelerometer

javascript - 如何在 html head 中编写正确的 HERE javascript 源代码?浏览器总是无法加载资源

c# - 使用 Where 指定不同的泛型