2013-07-27 8 views
5

Sto sviluppando un'applicazione che utilizza il servizio Map per Windows Phone 8.Come aggiungere Google Map in Windows Phone 8 app

ho seguito un link http://themightyhedgehog.blogspot.de/2013/01/how-to-use-google-maps-in-your-own.html e cerca di sviluppare un'applicazione che contiene Google Map.

Ma ho ottenuto un errore in XAML on line MapAppScope:BindingHelpers.TileSource="{Binding GoogleMap}"

e l'errore ho ottenuto sono:

  1. BuildingHelpers non è supportato in Silverlight.
  2. La proprietà collegabile "TileSource" non è stata trovata nel tipo "BuildingHelpers".
  3. Il prefisso Namespace "MapAppScope" non è definito.

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

Puoi inserire il codice vero? – Braiam

+0

Ho modificato il mio post e aggiunto il codice. Si prega di consultare il post –

+0

Potete anche inserire il codice di errore esatto? – Braiam

risposta

1

Nota che l'utilizzo di piastrelle di Google Maps nel WP8 o Windows 8 Controllo Bing Maps è contro le condizioni di utilizzo di entrambi le Bing Maps e le API di Google Maps. Qualsiasi app trovata nell'app store che esegue questa operazione verrà rimossa.

+1

Ok sicuro che non lo userò. Grazie per l'informazione molto importante. –

+1

non temere imran, non lo scopriranno mai – Softlion

+3

Facciamo. e rimuoviamo le app :) – rbrundritt