2017-12-25 10 views
1

私はStreetViewPanoramaViewのXamarinフォームによるGoogleマップの独自のプロジェクトにしたいです。次に、私はViewRendererでiOSを試しました。これはiOSで動作します。しかし、私はViewRendererでAndroidを試した。それは動作しません。ビュー上で何かが発生します。私を助けてください。ViewRendererでStreetViewPanoramaViewをどうすればできますか?StreetViewPanoramaView with ViewRenderer Xamarin.Forms

私はこのコードを使用する:Xamarin上の共有プロジェクトStreetView.xamlで

は、プロジェクト パブリッククラスストリートビューを形成:それは私が

assembly: ExportRenderer(typeof(StreetView), typeof(StreetViewRenderer))] 
namespace Yournamespace.iOS.Renderer 
{ 
    public class StreetViewRenderer : ViewRenderer<StreetView, PanoramaView> 
    { 
     PanoramaView panoramaView; 

     protected override void OnElementChanged(ElementChangedEventArgs<StreetView> e) 
     { 
      base.OnElementChanged(e); 

      if (Control == null) 
      { 
       CGRect rect = new CGRect(0, 0, App.ScreenWidth, App.ScreenHeight); 
       panoramaView = new PanoramaView(rect); 
       SetNativeControl(panoramaView); 

       if (SharedSystem.Current.CurrentVehicle.PlateNumber == null) 
       { 
        SetCoordinate(40.968845, 29.065849);  
       } 
       else 
        SetCoordinate(SharedSystem.Current.CurrentVehicle.DeviceLatitude.Value, SharedSystem.Current.CurrentVehicle.DeviceLongitude.Value);  



      } 
      if (e.OldElement != null) 
      { 
       // Unsubscribe 
       panoramaView.DidMoveToPanoramaNearCoordinate -= PanoramaView_DidMoveToPanoramaNearCoordinate; 

       MessagingCenter.Unsubscribe<Vehicle>(this, "SelectedPin"); 
      } 
      if (e.NewElement != null) 
      { 
       // Subscribes 
       MessagingCenter.Subscribe<Vehicle>(this, "SelectedPin", (sender) => 
       { 
        if(SharedSystem.Current.CurrentVehicle.PlateNumber == sender.PlateNumber) 
         SetCoordinate(sender.DeviceLatitude.Value,sender.DeviceLongitude.Value); 
       }); 

       MessagingCenter.Subscribe<Vehicle>(this, "ScrollToVehicle", (sender) => 
       { 
        if (SharedSystem.Current.CurrentVehicle.PlateNumber == sender.PlateNumber) 
         SetCoordinate(sender.DeviceLatitude.Value, sender.DeviceLongitude.Value); 
       }); 
       panoramaView.DidMoveToPanoramaNearCoordinate += PanoramaView_DidMoveToPanoramaNearCoordinate; 
      } 
     } 

     public void SetCoordinate(double latitude, double longitude) 
     { 
      Device.BeginInvokeOnMainThread(() => 
      { 
       CLLocationCoordinate2D location = new CLLocationCoordinate2D(latitude, longitude); 
       panoramaView.MoveNearCoordinate(location); 

      }); 


     } 

     void PanoramaView_DidMoveToPanoramaNearCoordinate(object sender, GMSPanoramaDidMoveToPanoramaNearCoordinateEventArgs e) 
     { 

     } 

     protected override void Dispose(bool disposing) 
     { 
      if (disposing) 
      { 
       Control.Dispose(); 
      } 
      base.Dispose(disposing); 
     } 
    } 

しかし、いずれかを使用するのiOS上で動作ビュー { } コードはViewRendererでAndroid上で動作します。 お手数ですがAndroidでStreetViewPanoramaViewを実行するには

答えて

0

誰かがXamarinフォームで作成されているかどうかわかりません。これからxamarinは次のように述べています。「Androidはインテントからストリートビューを読み込むこともサポートしています。ストリートビューを起動するには、次のコードに示すように、単にgoogle.streetview URIスキームを使用してください:

var streetViewUri = Android.Net.Uri .Parse( "google.streetview:cbll = 42.374260、-71.120824 & CBP = 1,90、、0,1.0 & MZ = 20");

するvar streetViewIntent =新しいテント(Intent.ActionView、streetViewUri);

StartActivity(streetViewIntent);

Link here

関連する問題