私は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を実行するには