Monotouch - Нарисуйте MKPolyline на карте - PullRequest
3 голосов
/ 29 мая 2011

У меня есть MKPolyline из массива CLLocationCoordinate2D (Points).Все в порядке.

Я добавил эту строку на карту как наложение, например: Map.AddOverlay(line);

Я установил следующее событие: Map.SetVisibleMapRect(line.BoundingMapRect, true);

Но строкане отображается, хотя границы карты правильные.

Я смотрю в MKPolylineView, но не могу заставить его работать.

Кто-нибудь знает, как установить цвет и ширину линии?

Спасибо

Ответы [ 2 ]

8 голосов
/ 30 мая 2011

После долгих царапин, вот как отобразить MKPolyline на MKMapView:

Шаг 1. Создание метода делегата для карты GetViewForOverlay

Map.GetViewForOverlay = Map_GetViewForOverlay;

Где Map - это MKMapView.

MKOverlayView Map_GetViewForOverlay(MKMapView mapView, NSObject overlay)
{
    if(overlay.GetType() == typeof(MKPolyline))
    {
       MKPolylineView p = new MKPolylineView((MKPolyline)overlay);
       p.LineWidth = 2.0f;
       p.StrokeColor = UIColor.Green;
       return p;
    }
    else
        return null;
}

Шаг 2. Создайте новый экземпляр MKPolyline

MKPolyline line = MKPolyline.FromCoordinates(polyPoints);

Где polyPoints - это массив CLLocationCoordinate2D.

Шаг 3: добавить наложение на карту

Map.AddOverlay(line);

Шаг 4. Используйте приведенный ниже код для увеличения и изменения границ карты в соответствии с маршрутом

Map.SetVisibleMapRect(line.BoundingMapRect, true);
1 голос
/ 04 сентября 2011

Я почти уверен, что если вы намерены динамически нарисовать карту поверх MapView, используя заданный объект модели, который указывает две координаты, которые вы хотите посмотреть на мой проект здесь:позволит вам наложить путь, и он будет обновляться при изменении карты.Это модифицированная версия порта obj-C, который использует фоновые потоки, поэтому он не блокируется.

Спасибо,

Anuj

...