【问题标题】:Error in drawing polyLine in ios在ios中绘制折线时出错
【发布时间】:2013-12-07 05:36:10
【问题描述】:

我正在创建一个应用程序,它应该显示两点之间的路线。

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

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

我收到一个错误

Objective-C 指针类型“NSMutableArray *”到 C 指针类型“CLLocationCoordinate2D *”的隐式转换需要桥接转换

请帮我解决这个问题。
提前致谢。

【问题讨论】:

  • locations 数组中存储的对象的确切类型是什么?
  • 包含地图坐标的注解。
  • 按照答案建议的修改后,是否也实现了viewForOverlay或者rendererForOverlay委托方法?
  • 不,我是新手我不知道,那是什么 nu

标签: ios mapkit mkpolyline


【解决方案1】:

polylineWithCoordinates:count: 接受CLLocationCoord2D 类型的对象数组,count 是坐标中的对象数。看看这个link。我在下面阅读了您的 cmets,您的数组(位置)中的对象似乎是 MKAnnotations 类型,而它们应该是 CLLocationCoord2D。看看这个。该错误还表明该数组的一个对象(您提供的)包含NSMutableArray 类型的对象。也许在某个地方,您添加了错误的实例。也看看这个。

如果这有帮助,请告诉我。

【讨论】:

  • 我说的是,location数组包含注解对象,其中包含坐标
  • 是的。但是 K-Compiler 不明白这一点。您需要将这些坐标直接放入数组中,而不是具有坐标的对象(注释对象)。 :P
【解决方案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];

【讨论】:

  • 您是否检查过坐标是否正确填充?并且你的分数有合适的值吗?
  • 我已经用故事板很好地绘制了点,当我点击这些注释时,它会在文本框中显示它的坐标,所以绘制点没有问题。
  • 其实我没有实现viewForOverlay方法,所以报错了。现在我明白了。谢谢你
  • 但是,Polyline 是在两点之间画一条直线,但我想在两点之间画一条路径。
猜你喜欢
  • 2018-01-26
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
相关资源
最近更新 更多