0

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

1 つの mapoverlay で適切に機能しますが、2 つでは機能しません。

4

2 に答える 2

0

Imageあなたの例をいじってみたところ、同じオブジェクトを'content変数にアシエートすること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...)

MapOverlaysXMLから座標をロードするときに、ループを使用して生成しているようです。この場合は、ループの各反復で同じインスタンスを再利用するのではなく、ループを通過するたびに新しいイメージを設定するだけです。

于 2013-01-14T23:12:05.497 に答える
0

この質問に関する別のスレッドで私の回答を参照してください @ How can I add programmatically add a PushPin, and could I make it have a custom image?

短いバージョンは、単一の MaPlayer で複数の MapOverlays をプログラムで生成するか、MapExtensions プッシュピン データバインディングを使用してそれを行うことができるということです。

また、コードにバグがあります。同じ UIElement (この場合は Image) をビジュアル ツリーに 2 回追加することはできません。user8709 が言ったように、MapOverlay ごとに新しい UIElement を作成する必要があります。

于 2013-01-15T00:03:28.693 に答える