2012-05-30 86 views
1

我在使用Google路線API時遇到問題。 我得到的JSON字符串和解析它,獲得overview_polylines串Google地圖API折線未添加到地圖

NSString *allPolylines = [NSString stringWithFormat:[[[routes objectAtIndex:0] objectForKey:@"overview_polyline"] objectForKey:@"points"]]; 

這個事情的作品。 我無法將其添加到地圖中。 我使用這個職位http://iosguy.com/tag/directions-api/這似乎正是我所追求的。

我已經實現了

-(NSMutableArray *)decodePolyLine:(NSString *)encodedStr 

方法,它的偉大工程。我NSLogged結果,它顯示出來,就像我輸出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,但沒有在地圖上顯示出來。

有什麼想法? 在此先感謝!

回答

1

顯示的代碼看起來不錯,只是你不應該直接調用viewForOverlay

當需要顯示疊加層時,地圖視圖將調用該委託方法。

它不會調用委託方法的最簡單的原因是地圖視圖的delegate屬性未設置。

如果設置了delegate屬性,則驗證座標是您期望的,並確保它們沒有翻轉(經度中的緯度,反之亦然)。

要檢查的另一件事:
如果_mapView是IBOutlet,請確保它實際連接到xib中的地圖視圖。

+0

想來想想,我想我沒有設置代表自己,不知道,但會檢查我什麼時候回家..謝謝! –

+0

就是這樣。它現在起作用,傻了我。非常感謝! –