标记已加载到地图上,但折线未显示在Google地图上,并且代码没有错误

时间:2019-07-02 16:14:38

标签: c# android google-maps xamarin polyline

我根据折线文档编写了代码,但代码中没有出现任何错误,也没有代码引发异常。即使应用程序运行正常,但是应该显示的折线也没有加载到我的Android应用程序的地图上。

foreach (var route in routeList)
                {
                    if (route.RouteSegmentPoints != null)
                    {

                        Polyline polyline;
                        int color = Android.Graphics.Color.Black;
                        PolylineOptions poly = 
Utils.GetPolyLineOptions(color, 100, true, 100);
                        polyline = _map.AddPolyline(poly);
                        for (int i=0;i<route.RouteSegmentPoints.Count;i++)
                        {
                            point = new 
LatLng(Convert.ToDouble(route.RouteSegmentPoints[i].Latitude), 
Convert.ToDouble(route.RouteSegmentPoints[i].Longitude));
                            //endPoint = new 
LatLng(Convert.ToDouble(route.RouteSegmentPoints[i+1].Latitude), 
Convert.ToDouble(route.RouteSegmentPoints[i+1].Longitude));
                            poly.Add(point);
                        }



                        //System.Console.WriteLine("single Route");
                    }
                }

如果有人知道解决方案,请提前告知我。

1 个答案:

答案 0 :(得分:0)

在将值添加到poly之前,应先为_map分配值,这样就不会传递添加到其中的值。

foreach (var route in routeList)
{
    if (route.RouteSegmentPoints != null)
    {
        Polyline polyline;
        int color = Android.Graphics.Color.Black;
        PolylineOptions poly = Utils.GetPolyLineOptions(color, 100, true, 100);
        for (int i=0;i<route.RouteSegmentPoints.Count;i++)
        {
            point = new 
LatLng(Convert.ToDouble(route.RouteSegmentPoints[i].Latitude), 
Convert.ToDouble(route.RouteSegmentPoints[i].Longitude));
            poly.Add(point);
        }
        polyline = _map.AddPolyline(poly);
    }
}

如果这也不起作用,您可以尝试将代码中的最后一行包装到“在Ui线程上运行”,因为在此线程上执行此代码的代码可能无法更新UI,具体取决于线程:

Activity.RunOnUiThread(() => {
    polyline = _map.AddPolyline(poly);
});