маркеры загружаются на карту, но полилинии не отображаются на карте Google без ошибок в коде - PullRequest
1 голос
/ 02 июля 2019

Я написал код в соответствии с документацией для полилиний, и я не получаю никаких ошибок в коде, или код не генерирует никаких исключений.даже приложение работает нормально, но полилинии, которые должны отображаться, не загружаются на карту в моем приложении для 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 голосов
/ 03 июля 2019

Вы должны присваивать значения 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);
    }
}

Если это тоже не сработает, вы можете попробовать перенести последнюю строку из моего кода в «Запуск в потоке пользовательского интерфейса», поскольку в зависимости от потока, в котором выполняется этот код, он может не обновлять пользовательский интерфейс:

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