2017-08-07 2 views
0

これは、これは私のビュー(PCL)ルーラインが表示されないのはなぜですか? xamarinは

[XamlCompilation(XamlCompilationOptions.Compile)] 
public partial class ComoChegarView : ContentPage 
{ 
    Localizacao userLocal; 

    public ComoChegarView(double lat, double longi) 
    { 
     userLocal = new Localizacao(); 
     Task.Run(async() => await getUserLocal()).Wait(); 
     Localizacao lojaLocal = new Localizacao(); 
     lojaLocal.latitude = lat; 
     lojaLocal.longitude = longi; 

     InitializeComponent(); 

     //route 
     var customMap = new CustomMap 
     { 
      IsShowingUser = true, 
      HeightRequest = 100, 
      WidthRequest = 960, 
     }; 
      Content = customMap; 

     customMap.RouteCoordinates.Add(new Position(userLocal.latitude, userLocal.longitude)); 
     customMap.RouteCoordinates.Add(new Position(lojaLocal.latitude, lojaLocal.longitude)); 
     customMap.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(userLocal.latitude, userLocal.longitude), Distance.FromMiles(1.0))); 
    } 

であり、これは私のCustomMapRenderer(アンドロイド)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using neoFly_Montana; 
using neoFly_Montana.Droid; 
using Xamarin.Forms; 
using Xamarin.Forms.Maps.Android; 
using Android.Gms.Maps; 
using Xamarin.Forms.Maps; 
using Android.Gms.Maps.Model; 

[assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))] 
namespace neoFly_Montana.Droid 
{ 
public class CustomMapRenderer : MapRenderer, IOnMapReadyCallback 
{ 
    GoogleMap map; 
    List<Position> routeCoordinates; 

    protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Map> e) 
    { 
     base.OnElementChanged(e); 

     if (e.OldElement != null) 
     { 
      // Unsubscribe 
     } 

     void OnMapReady(GoogleMap googleMap) 
     { 
      map = googleMap; 

      var polylineOptions = new PolylineOptions(); 
      polylineOptions.InvokeColor(0x66FF0000); 

      foreach (var position in routeCoordinates) 
      { 
       polylineOptions.Add(new LatLng(position.Latitude, position.Longitude)); 
      } 

      map.AddPolyline(polylineOptions); 
     } 

     if (e.NewElement != null) 
     { 
      var formsMap = (CustomMap)e.NewElement; 
      routeCoordinates = formsMap.RouteCoordinates; 

      ((MapView)Control).GetMapAsync(this); 
     } 
    } 


} 
} 

OnMapReadyである私のカスタムマップ(PCL)

public class CustomMap : Map 
{ 
    public List<Position> RouteCoordinates { get; set; } 

    public CustomMap() 
    { 
     RouteCoordinates = new List<Position>(); 
    } 
} 

あるを形成します私はなぜ呼びかけられていないのですか? 私はxamarin.formsを使用しています マップは動作しますが、行だけは表示されません 通りに沿って線が引かれ、正しく回るか、それとも回り込むべき点を設定する必要がありますか? 本当にあなたの答えが必要です

私を助けてください!

答えて

1

OnMapReadyOnElementChangedの中に入れましたか?これはあなたの質問のタイプミスですか? OnElementChangedから取り出してみてください。

routelineが表示されない場合、それはあなたがAndroidのマニフェストに右キーを追加していない可能性があります

<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="XXXXXXXXXXXXXXX" /> 

は、このキーを取得するには、ドキュメントObtaining a Google Maps API Keyを参照することができます。

+0

地図が完璧に動作しているため、キーが正しいですが、今は私があなたに教えてくれます。どうもありがとうございました! –

+0

あなたが確信している、それは他の内部にあったメソッドのために表示されませんでした。今それは道を描きます...道を自動的に変える方法があるかどうか知っていますか?または、私はそれをポイントごとに常に設定する必要がありますか?なぜなら、これはストリートの描画を尊重しない直線を描くからです。 ありがとう –

+0

@JoycedeLannaは、このカスタムマップの新しいインスタンスを作成するときに自動的に通りを回すために、例えば 'var customMap = new CustomMap {IsShowingUser = true、MapType = MapType.Street、 ......} ' –

関連する問題