添加多个协调到Windows Phone 8地图

时间:2013-01-14 16:37:01

标签: windows-phone-8

我的wp8应用程序从xml加载了不同的协调,所有协调都应该显示在地图中?我的应用程序中的每件事都是动态创建的,所以我逐步创建地图并添加maplayer和mapoverlay。但似乎我无法为maplayer添加多个mapoverlay。请帮帮我。

MapOverlay myLocationOverlay = new MapOverlay();
                myLocationOverlay.Content = pinIMG;
                myLocationOverlay.PositionOrigin = new Point(0.5, 0.5);
                myLocationOverlay.GeoCoordinate = new GeoCoordinate(57.724611, 12.938945);

MapOverlay myLocationOverlay2 = new MapOverlay();
                myLocationOverlay2.Content = pinIMG;
                myLocationOverlay2.PositionOrigin = new Point(0.5, 0.5);
                myLocationOverlay2.GeoCoordinate = new GeoCoordinate(57.724155, 12.939023);

MapLayer myLocationLayer = new MapLayer();
myLocationLayer.Add(myLocationOverlay);
myLocationLayer.Add(myLocationOverlay2);
MyMap.Layers.Add(myLocationLayer);

它适用于一个mapoverlay而不是两个。

2 个答案:

答案 0 :(得分:0)

从使用您的示例开始,我发现将相同的Image对象分配给MapOverlays'内容变量不起作用(抛出调试异常)。给MapOverlays一个唯一的Image对象是解决方案:

假设您正在使用位图图像,那么这就足够了:

BitmapImage bmp = new BitmapImage(new Uri("/Assets/pinIMG.png", UriKind.Relative));

System.Windows.Controls.Image pinIMG1 = new System.Windows.Controls.Image();
pinIMG1.Source = bmp;

System.Windows.Controls.Image pinIMG2 = new System.Windows.Controls.Image();
pinIMG2.Source = bmp;

// MapOverlay and MapLayer setup (each overlay gets its on pinIMG...)

在从XML加载坐标时,您可能会使用循环来生成MapOverlays。如果是这种情况,只需每次通过循环设置一个新图像,而不是在循环的每次迭代中重复使用相同的实例。

答案 1 :(得分:0)

请在@ How can I add programmatically add a PushPin, and could I make it have a custom image?

这个问题的另一个帖子中查看我的答案

简短版本是您可以在单个MaPlayer中以编程方式生成多个MapOverlay,或者您可以使用MapExtensions图钉数据绑定为您执行此操作。

此外,您的代码中存在错误。您不能将相同的UIElement(在本例中为Image)添加到可视树中两次。 AS user8709说,你应该为每个MapOverlay创建一个新的UIElement。