2015-09-14 2 views
1

У меня есть список из 50+ координат. Каков наиболее эффективный способ рисования линий между всеми этими координатами (должен создать «круговой» путь, поскольку все они имеют порядок отображения), который также легко настроить (толщина линии, цвет и т. Д.)?MKMapView Соединительные линии между всеми точками

Спасибо!

ответ

4

Я не уверен, что понял ваш вопрос наверняка. Если вы ищете список точек для отображения от конца до конца, то вам нужно будет создать объект MKPolyline из этих точек, убедившись, что точки добавлены в массив myPoints в том порядке, в котором вы хотите их подключить:

CLLocationCoordinate2D coordinates[[myPoints count]]; 

int i = 0; 
for (Checkpoint *point in myPoints) 
{ 
    coordinates[i] = CLLocationCoordinate2DMake([point.lat floatValue] , [point.lon floatValue]); 
    i++; 
} 

self.polyline = [MKPolyline polylineWithCoordinates:coordinates count: [myPoints count]]; 
[mapView addOverlay:self.polyline]; 

Затем убедитесь, что вы реализуете метод делегата - mapView:rendererForOverlay:. Вот пример, но адаптировать его к вашим потребностям:

-(MKOverlayRenderer*)mapView:(MKMapView*)mapView rendererForOverlay:(id <MKOverlay>)overlay 
{ 
    MKPolylineRenderer* lineView = [[MKPolylineRenderer alloc] initWithPolyline:self.polyline]; 
    lineView.strokeColor = [UIColor blueColor]; 
    lineView.lineWidth = 7; 
    return lineView; 
} 

Однако, если вы действительно хотите замкнутый контур (круговой) объект, то вам нужно будет создать MKPolygon объект вместо этого. Процесс довольно схож; в этом случае заменить self.polyline инициализатору выше с этим кодом:

self.polygon = [MKPolygon polygonWithCoordinates:coordinates count: [myPoints count]]; 
[mapView addOverlay:self.polygon]; 

- mapView:rendererForOverlay: код должен оставаться таким же, я думаю. Я не тестировал этот код, но, надеюсь, он заставит вас двигаться в правильном направлении.

+0

Невозможно добавить тип данных «Контрольная точка» – EdSniper