我的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而不是两个。
答案 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。