1

ケース:Windows Phone 7(Mango)アプリケーション。

地理座標を含む(数百の)アイテムのリストがあります。各アイテムのパラメータデータは画像のレンダリングに使用され、これらの画像はリストボックスに表示されます。

WP7マップ要素を書き込み可能なビットマップにレンダリングすることは可能ですか?そうでない場合は、マップ要素からUIジェスチャを無効にして、少なくとも静止画像のように動作することは可能ですか?

4

3 に答える 3

1

マップの静止画像が必要な場合は、各リストアイテムのマップコントロールではなく、Bingマップの静的マップAPIを使用することをお勧めします。

静的マップAPIを使用すると、画像サイズを指定して、電話へのダウンロードサイズを減らすこともできます。

それでもBingMapコントロールを使用する場合は、XAMLの場合のように、IsHitTestVisibleをfalseに設定することでUIジェスチャを無効にできます。

<my:Map IsHitTestVisible="False" />
于 2012-06-28T19:12:38.477 に答える
0

GFTabからのコメントで提案された例を試してください

静的にするために、IsHitTestVisible="False"を試すことができます

于 2012-06-28T15:35:50.083 に答える
0

これが、アプリケーションで現在表示されている領域から2番目のタイルを作成した方法です。

    private void pinCurrentMapCenterAsSecondaryTile() {
        try {
            var usCultureInfo = new CultureInfo("en-US");
            var latitude = map.Center.Latitude.ToString(usCultureInfo.NumberFormat);
            var longitude = map.Center.Longitude.ToString(usCultureInfo.NumberFormat);
            var zoom = map.ZoomLevel.ToString(usCultureInfo.NumberFormat);
            var tileParam = "Lat=" + latitude + "&Lon=" + longitude + "&Zoom=" + zoom;
            if (null != App.CheckIfTileExist(tileParam)) return; // tile for exactly this view already exists

            using (var store = IsolatedStorageFile.GetUserStoreForApplication()) {
                var fileName = "/Shared/ShellContent/" + tileParam + ".jpg";
                if (store.FileExists(fileName)) {
                    store.DeleteFile(fileName);
                }
                // hide pushpins and stuff
                foreach (var layer in map.Children.OfType<MapLayer>()) {
                    layer.Visibility = Visibility.Collapsed;
                }
                using (var saveFileStream = new IsolatedStorageFileStream(fileName, FileMode.Create, store)) {
                    var wb = new WriteableBitmap(173, 173);
                    b.Render(
                        map,// the map defined in XAML
                        new TranslateTransform {  
                            // use the transformation to clip the center of the current map-view
                            X = -(map.ActualWidth - 173)/2,
                            Y = -(map.ActualHeight - 173)/2,
                    });
                    wb.Invalidate();
                    wb.SaveJpeg(saveFileStream, wb.PixelWidth, wb.PixelHeight, 0, 100);
                }
                foreach (var layer in map.Children.OfType<MapLayer>()) {
                    layer.Visibility = Visibility.Visible;
                }
            }

            ShellTile.Create(
                new Uri("/MainPage.xaml?" + tileParam, UriKind.Relative),
                new StandardTileData {
                    BackTitle = "ApplicationName",
                    Count = 0,
                    // You can only load images from the web or isolated storage onto secondary tiles
                    BackgroundImage = new Uri("isostore:/Shared/ShellContent/" + tileParam + ".jpg", UriKind.Absolute),
                });
        } catch (Exception e) {
            // yeah, this is 7331!!11elfelf
        }
    }
于 2012-11-14T10:22:38.317 に答える