使用Google Directions API时遇到问题。 我正在获取JSON字符串并对其进行解析,获取overview_polylines字符串
NSString *allPolylines = [NSString stringWithFormat:[[[routes objectAtIndex:0] objectForKey:@"overview_polyline"] objectForKey:@"points"]];
这件事有效。 我无法将其添加到地图中。 我正在使用这篇帖子http://iosguy.com/tag/directions-api/,这似乎正是我所追求的。
我已经实施了
-(NSMutableArray *)decodePolyLine:(NSString *)encodedStr
方法,效果很好。我NSLog了结果,它显示出我正在输出CLLocation对象。
问题在于我无法让它显示在地图上。这是以下代码
NSMutableArray *_path = [self decodePolyLine:allPolylines];
NSInteger numberOfSteps = _path.count;
CLLocationCoordinate2D coordinates[numberOfSteps];
for (NSInteger index = 0; index < numberOfSteps; index++) {
CLLocation *location = [_path objectAtIndex:index];
CLLocationCoordinate2D coordinate = location.coordinate;
coordinates[index] = coordinate;
}
MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
[_mapView addOverlay:polyLine];
[self mapView:_mapView viewForOverlay:polyLine];
我还尝试添加对
的显式调用[self mapView:_mapView viewForOverlay:polyLine];
是:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
polylineView.strokeColor = [UIColor redColor];
polylineView.lineWidth = 1.0;
return polylineView;
}
调用最后一个方法,我使用NSLog检查,但地图上没有显示任何内容。
有什么想法? 提前谢谢!
答案 0 :(得分:1)
显示的代码看起来没问题,只是你不应该直接拨打viewForOverlay
。
当需要显示叠加层时,地图视图将调用该委托方法。
它不会调用委托方法的最简单原因是未设置地图视图的delegate
属性。
如果设置了delegate
属性,则验证坐标是否符合预期,并确保它们没有翻转(纬度经度,反之亦然)。
要检查的另一件事:
如果_mapView
是IBOutlet,请确保它实际上已连接到xib中的地图视图。