2013-07-27 5 views
5

Ich entwickle eine App, die Map-Dienst verwendet für Windows Phone 8.wie google map in Windows Phone 8-App

Ich folgte ein Link http://themightyhedgehog.blogspot.de/2013/01/how-to-use-google-maps-in-your-own.html und versucht zu entwickeln, eine App enthält Google Map hinzuzufügen.

Aber ich habe einen Fehler in der XAML-on line MapAppScope:BindingHelpers.TileSource="{Binding GoogleMap}"

und die Fehler, die ich bekam, sind:

  1. BuildingHelpers nicht in Silverlight unterstützt.
  2. Die anbringbare Eigenschaft 'TileSource' wurde im Typ 'BuildingHelpers' nicht gefunden.
  3. Das Namespacepräfix "MapAppScope" ist nicht definiert.

in 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> 

In .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(); 
     } 


    } 
} 
+0

Können Sie den tatsächlichen Code eingeben? – Braiam

+0

Ich habe meinen Post bearbeitet und den Code hinzugefügt. Bitte sehen Sie diesen Beitrag –

+0

Können Sie auch den genauen Fehlercode? – Braiam

Antwort

1

Beachten Sie, dass mit Google Maps Fliesen in der Bing Maps WP8 oder Windows 8 Steuerung ist gegen die Nutzungsbedingungen von beiden die Bing Maps und Google Maps APIs. Alle Apps im App Store, die dies tun, werden entfernt.

+1

Ok, ich werde das nicht benutzen. Danke für die sehr wichtige Information. –

+1

keine Angst imran, sie werden es nie herausfinden – Softlion

+3

Wir tun. und wir entfernen die Apps :) – rbrundritt