希望在Xamarin.Android

时间:2019-07-04 15:18:02

标签: android google-maps xamarin google-maps-markers

我正在加载Google地图,然后在通常需要的地图上添加标记 4到7秒以用标记加载地图,但我想改进 应用程序的性能,所以首先我只想显示地图和背景 我想加载标记并稍后在地图上应用。我尝试了很多方式 Task.Run(),Thread(threadStart()),RunonUiThread()无效。 RunonUiThread和threadstart阻止了UI,并花费了更多时间来加载Task中的位置。Run未加载地图上的标记。

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


    SetUpMap(){
        if (_map == null)
        {
            Utils.mapFrag = 
         (MapFragment)FragmentManager.FindFragmentById(Resource.Id.map);
            RunOnUiThread(() =>
                {
             //initializing map which is calling IOnMapReady 
                 asynchronously
                    Utils.mapFrag.GetMapAsync(this); 
                });

        }
        else
        {
            LoadMarkersOnMap(_map);
        }

    }

    public void OnMapReady(GoogleMap googleMap)
    {
        _map = googleMap;
        _map.UiSettings.MapToolbarEnabled = false;
        _map.UiSettings.MyLocationButtonEnabled = false;
        _map.UiSettings.ZoomControlsEnabled = false;
        Utils.map = googleMap;
        System.Threading.Tasks.Task.Run(() =>
        {
            LoadMarkersOnMap(_map);
            if (progressDialog != null && progressDialog.IsShowing)
                progressDialog.Dismiss();
        });
  }

 LoadMarkerOnMap(Googlemap _map){
 RunOnUiThread(()=>{
 //here i m getting the list of markers from the database
 and adding it to map 

});

 }

即使我尝试过不将runonUithread仍然阻止UI或 无法正确加载标记。有时它有时会加载标记 不会加载所有标记。

1 个答案:

答案 0 :(得分:0)

在此处查看Xamarin文档:Writing Responsive Applications