私は、ユーザーがマップにデータを追加するか、既存のデータをクリックして詳細を表示できる「メイン」マップページを持っています。これはPushModalAsync()で行われ、新しいページに移動します。私の問題は、これらの新しいページの両方にあります。私は、新しいMapViewを持つ新しいマップを持っています。これは、「メイン」ページからMapViewの「下に」あります。 MapViewとMapの両方は、セカンダリページ上の新しいオブジェクトです。ARCGis Xamarin - 新しいページにナビゲートした後、前のページのMapViewが表示されます
新しいページに移動した後、以前のMapViewは、新しいMapViewも存在する(メインページの)画面の領域に表示されます。言い換えれば、私の新しい地図ページでは、私の地図はレイアウトが異なっており、部分的にレイアウトが「メイン」マップよりも高くなっています。高いところに座っている部分は、新しい地図のうち唯一見える部分であり、私は対話することができます。同じエリアに座っている部分が「メイン」マップビューで、私はそれと対話できず、新しいマップをブロックします。
私はPushAsyncでもこれを試しましたが(モーダルではありません)、何も変更されていません。 1つのアプリに複数のページにわたって複数の地図を配置する方法はありますか?これはArcGISでも可能ですか?このアプリは以前はGoogle Maps/Appleと同じレイアウトだったが、うまくいきました。
編集:(関係ない部分を除去した)コードは、ここにこのページでは、それが同じにレイアウトされている場合は、このマップが覆われていることを特徴とその上のマップで別のページからナビゲートされます最初のマップの領域。このページから、両方の地図が表示される第3ページに移動します。私が追加しようとしたときに削除が正常に動作しますが、しかし私はビュー・グループにヌル子を追加することはできませんというエラーが出ます:
public partial class EventDetails : ContentPage
{
public Xamarin.Forms.Grid MapGrid = new Xamarin.Forms.Grid()
{
RowDefinitions =
{
new RowDefinition { Height = 220 },
new RowDefinition { Height = GridLength.Auto }
},
ColumnDefinitions =
{
new ColumnDefinition { Width = 500 }
},
HorizontalOptions = LayoutOptions.Center
};
public Map DetailMap;
public MapView MyDetailMapView = new MapView();
public EventDetails(MapLog eventDetails, string strMapType)
{
DetailMap = new Map(BasemapType.ImageryWithLabels, eventDetails.Latitude, eventDetails.Longitude, iMapDetail);
MyDetailMapView.Map = DetailMap;
MyDetailMapView.ViewpointChanged += MyMapView_ViewpointChanged;
var scrollView = new ScrollView
{
Content = mainStack
};
MapGrid.Children.Add(MyDetailMapView, 0, 0);
MapGrid.Children.Add(scrollView, 0, 1);
Content = MapGrid;
}
#if __ANDROID__
protected override void OnAppearing()
{
if (!MapGrid.Children.Contains(MyDetailMapView))
{
try
{
MapGrid.Children.Add(MyDetailMapView);
}
catch (Exception ex)
{
DisplayAlert("Err", ex.Message, "Ok");
}
}
base.OnAppearing();
}
protected override void OnDisappearing()
{
if (MapGrid.Children.Contains(MyDetailMapView))
MapGrid.Children.Remove(MyDetailMapView);
base.OnDisappearing();
}
#endif
}
EDIT *:私は私のXamarinは、バージョンとArcGISランタイムと今まで溶液を形成する更新しますマップを削除/追加すると問題なく動作します。
アドバイスをいただきありがとうございます。 修正しても何かを明確にすることはできますか?私のMapViewはXamarin Forms Gridにあり、Gridは私のContentPageのコンテンツです。 グリッドから削除すると消えてしまいますが、再追加しようとするとOnAppearingで "ViewGroupにnull子ビューを追加できません"というエラーが表示されます。 もう一度追加すると、Xamarin Forms Gridに追加し直していますか?私のデバッグでは、GridがnullでもMapViewでもないことがわかります。何か案が? – AlxSeg
はいMapViewをグリッドに追加しています。あなたの質問にあなたのコードを投稿できますか? – Ehsan
コードの下、それは正しく '保護されたオーバーライドボイドOnAppearing(){ 場合の間隔を表示しない理由がわからない申し訳ありません(!MapGrid.Children.Contains(MyDetailMapView)){ MapGrid.Children.Add(MyDetailMapView ); } base.OnAppearing(); }保護オーバーライドボイドOnDisappearing(){ IF(MapGrid.Children.Contains(MyDetailMapView)) MapGrid.Children.Remove(MyDetailMapView)。 base.OnDisappearing(); } ' – AlxSeg