簡體   English   中英

Xamarin谷歌地圖

[英]Xamarin Google Map

我在Xamarin中進行循環,將引腳添加到谷歌地圖中。 想知道它為什么不立即呈現給地圖?

我想一次顯示要添加到Map中的引腳,所以我將Sleep添加1秒以延遲繪圖。

我認為原因是因為它在繪圖上運行代碼,因此使用下面代碼的方法將無效。

for(int i = 0;i < templist.Count ; i++)
        {
            if (i != 0)
            {
                if (MyMap.Pins.Count > 9) { 
                    MyMap.Pins.RemoveAt(0);
                }
            }

            var Item = templist.ElementAt(i);
            string resultDatetimer = Item.DateTimer;
            string resultLocation = Item.Location;
            string resultLatitude = Item.Latitude;
            string resultLongitude = Item.Longitude;


            var position = new Position(Convert.ToDouble(resultLatitude), Convert.ToDouble(resultLongitude));

            var pin1 = new Pin
            {
                Type = PinType.Place,
                Position = position,
                Label = "Date:" + resultDatetimer + ", Location:" + resultLocation
            };

            MyMap.Pins.Add(pin1);

            MyMap.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(Convert.ToDouble(resultLatitude), Convert.ToDouble(resultLongitude))
                 , Distance.FromMeters(500)));
System.Threading.Thread.Sleep(1000);
        }

1)不要使用System.Threading.Thread.Sleep因為這是一個阻塞調用,如果你在UI線程上,你的UI /鍵盤/觸摸輸入等等。所有這些都只是凍結了那個時間段,使用等待的Task.Delay相反,所以該線程的消息泵可以繼續。

await Task.Delay(1000);

2)如果您的代碼在后台線程上運行,請確保在ui線程上執行pin add和movetoregion。

Device.BeginInvokeOnMainThread(() =>
{
    MyMap.Pins.Add(pin1);
    MyMap.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(Convert.ToDouble(resultLatitude), Convert.ToDouble(resultLongitude))
     , Distance.FromMeters(500)));
}); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM