繁体   English   中英

Xamarin-将ESRI MapView动态添加到FrameLayout

[英]Xamarin - Add ESRI MapView dynamically to FrameLayout

我尚未发现使用axml定义从ArcGIS SDK for Xamarin添加MapViewer的任何功能。 这似乎不可能:

<?xml versio="1.0" encoding="utf-8"?>
<LinearLayout>
   ...
   <com.esri.mapping.MapView ... />
</LinearLayout>

我找到了使用代码动态构造整个视图的示例。 https://github.com/Esri/arcgis-runtime-samples-xamarin/tree/master/src/Android/Xamarin.Android

我希望使用XML具有更大的灵活性来扩展视图,因此我有了一个将MapView动态添加到FrameLayout中的想法-定义这样的资源(activity_map.axml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
       android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/mapView" />
</LinearLayout>

然后在活动类中:

public class MainActivity : MvxActivity<MainViewModel>
{
    private MapView _mapView = new MapView();

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        _mapView = new MapView(this);

        SetContentView(Resource.Layout.activity_amp);
        //How to get FrameLayout id ???
        var mapContainer=(FrameLayout)FindViewById();
        mapContainer.AddView(_mapView);
    }
}

这是有效的方法吗? 您会推荐另一个吗?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Esri.ArcGISRuntime.UI.Controls.MapView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/mapView" />
</LinearLayout>

public class MainActivity : MvxActivity<MainViewModel>
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        SetContentView(Resource.Layout.activity_main);
        var mapView = (MapView) FindViewById(Resource.Id.mapView);
        mapView.Map = ViewModel.Map;
    }   
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM