Windows Phone 8 のマップ サービスを使用するアプリを開発しています。
リンク http://themightyhedgehog.blogspot.de/2013/01/how-to-use-google-maps-in-your-own.htmlをたどり、 Google マップを含むアプリの開発を試みました。
しかし、オンラインのXamlでエラーが発生しました
MapAppScope:BindingHelpers.TileSource="{Binding GoogleMap}"
私が得たエラーは次のとおりです。
- BuildingHelpers は Silverlight ではサポートされていません。
- 添付可能なプロパティ 'TileSource' がタイプ 'BuildingHelpers' に見つかりませんでした。
- 名前空間プレフィックス「MapAppScope」が定義されていません。
Xaml の場合:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <Microsoft_Phone_Controls_Maps:Map 
Name="MyMap" 
Grid.Column="1" 
LogoVisibility="Collapsed" 
d:LayoutOverrides="GridBox" 
           MapAppScope:BindingHelpers.TileSource="{Binding GoogleMap}"
            Margin="0,0,0,2">
            <Microsoft_Phone_Controls_Maps:Map.Mode>
                <MSPCMCore:MercatorMode/>
            </Microsoft_Phone_Controls_Maps:Map.Mode>
        </Microsoft_Phone_Controls_Maps:Map>
    </Grid>
.CS の場合:
    namespace Google_Map_App
{
    public enum GoogleType
    {
        Street = 'm',
        Hybrid = 'y',
        Satellite = 's',
        Physical = 't',
        PhysicalHybrid = 'p',
        StreetOverlay = 'h',
        WaterOverlay = 'r'
    }
    public class Google : TileSource
    {
        public Google()
        {
            MapType = GoogleType.Street;
            UriFormat = @"http://mt{0}.google.com/vt/lyrs={1}&z={2}&x={3}&y={4}";
        }
        public GoogleType MapType { get; set; }
        public override Uri GetUri(int x, int y, int zoomLevel)
        {
            return new Uri(
              string.Format(UriFormat, (x % 2) + (2 * (y % 2)),
              (char)MapType, zoomLevel, x, y));
        }
    }
    public static class BindingHelpers
    {
        //Used for binding a single TileSource object to a Bing Maps control
        #region TileSourceProperty
        // Name, Property type, type of object that hosts the property, method to call when anything changes
        public static readonly DependencyProperty TileSourceProperty =
            DependencyProperty.RegisterAttached("TileSource", typeof(TileSource),
            typeof(BindingHelpers), new PropertyMetadata(SetTileSourceCallback));
        // Called when TileSource is retrieved
        public static TileSource GetTileSource(DependencyObject obj)
        {
            return obj.GetValue(TileSourceProperty) as TileSource;
        }
        // Called when TileSource is set
        public static void SetTileSource(DependencyObject obj, TileSource value)
        {
            obj.SetValue(TileSourceProperty, value);
        }
        //Called when TileSource is set
        private static void SetTileSourceCallback(object sender, DependencyPropertyChangedEventArgs args)
        {
            var map = sender as Map;
            var newSource = args.NewValue as TileSource;
            if (newSource == null || map == null) return;
            // Remove existing layer(s)
            for (var i = map.Children.Count - 1; i >= 0; i--)
            {
                var tileLayer = map.Children[i] as MapTileLayer;
                if (tileLayer != null)
                {
                    map.Children.RemoveAt(i);
                }
            }
            var newLayer = new MapTileLayer();
            newLayer.TileSources.Add(newSource);
            map.Children.Add(newLayer);
        }
        #endregion
    }
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
            // Sample code to localize the ApplicationBar
            //BuildLocalizedApplicationBar();
        }
    }
}