2013-11-22 32 views
2

我正在创建一个应用程序,该应用程序应显示两点之间的路线。在ios中绘制polyLine时出错

MKPolyline *routeLine = [MKPolyline polylineWithCoordinates:locations count:2]; 
[mapView addOverlay:routeLine]; 

这两个位置存储在数组“位置”。

我得到一个错误的Objective-C指针类型“的NSMutableArray *”的

隐式转换到C指针类型“CLLocationCoordinate2D *”需要一个桥接投

请帮我不谈这个。
在此先感谢。

+0

“locations”数组中存储的对象的确切类型是什么? – Anna

+0

包含地图坐标的注释。 – chandru

+1

在进行了答案建议的更改之后,您是否也实现了viewForOverlay或rendererForOverlay委托方法? – Anna

回答

2

此方法需要类型CLLocationCoordinate2D数组的参数。你将不得不创建一个CLLocationCoordinate2D类型的数组。代码看起来这有些类型:

CLLocationCoordinate2D *coordsArray = malloc(sizeof(CLLocationCoordinate2D) * locations.count); 

int i = 0; 
for (CLLocation *loc in locations) { 
    coordsArray[i] = loc.coordinate; 
    i++; 
} 

MKPolyline * routeLine = [MKPolyline polylineWithCoordinates:coordsArray 
         count:locations.count]; 

free(coordinateArray); 

[mapView addOverlay:routeLine]; 
+0

不,这条路线不是在两点之间绘制的。 – chandru

+0

你检查了正确填充的坐标吗?你的积分是否有适当的价值? – Saad

+0

我已经使用故事板绘制了点,当我点击这些注释时,它将在文本框中显示其坐标,所以在绘制点时没有问题。 – chandru

0

polylineWithCoordinates:count:接受CLLocationCoord2D类型的对象的数组和计算在坐标的对象的数量。看看这个link。我在下面阅读了您的评论,看起来您阵列中的对象(位置)类型为MKAnnotations,而它们应该是CLLocationCoord2D。看看这个。此外,错误表示此数组(您正在提供)的其中一个对象包含类型为NSMutableArray的对象。也许在某个地方,你正在添加错误的实例。也看看这个。

让我知道这是否有帮助。

+0

我说的是,位置数组包含注释对象,其中包含坐标 – chandru

+0

是的。但K编译器不理解这一点。您将需要直接将这些坐标放在数组中,而不是具有坐标的对象(注释对象)。 :P –