2017-12-25 11 views
1

Xamarin Forms에서 자체 프로젝트로 Google Map을 StreetViewPanoramaView에보고 싶습니다. 그런 다음 ViewRenderer를 사용하여 iOS를 시험해 보았습니다. iOS에서 작동합니다. 그러나 ViewRenderer를 사용하여 Android를 사용해 보았습니다. 작동하지 않습니다. 보기에는 아무 것도 발생하지 않습니다. 제발 도와주세요 ViewRenderer에서 StreetViewPanoramaView를 어떻게 할 수 있습니까?StreetViewPanoramaView with ViewRenderer Xamarin.Forms

자 마린에 공유 프로젝트 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는 Intent에서 스트리트 뷰로드를 지원합니다. 스트리트 뷰를 시작하려면 다음 코드와 같이 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