Gpx парсер или GPX документация - PullRequest
3 голосов
/ 27 декабря 2011

Я занимаюсь разработкой приложения для iOS 5.

Я хочу разработать анализатор GPX, но мне интересно, есть ли такой, прежде чем я начну его разрабатывать.знать, есть ли анализатор Objective-c GPX?

Ответы [ 4 ]

4 голосов
/ 04 января 2012

Посмотрите на: http://terrabrowser.googlecode.com/svn/trunk/

Там вы найдете GPSFileParser.m и GPSFileParser.h, которые могут вам помочь.

3 голосов
/ 08 февраля 2012

Я немного поработал над gpx-api . Он будет читать файлы gpx и имеет модель данных, которая может быть использована (на мой взгляд).

1 голос
/ 10 мая 2015

Я понимаю, что это старый вопрос, но я только начал использовать этот анализатор GPX:

https://github.com/patricks/gpx-parser-cocoa

, который разветвляется из этого:

https://github.com/fousa/gpx-parser-ios

Ниже приведен код, который я использую.Предполагается, что у вас есть IBOutlet (self.theMapView), подключенный к вашему MKMapView, вы установили делегат и добавили инфраструктуру MapKit к вашей цели, и что у вас есть действительный файл gpx (называемый test-gpx.gpx ) в вашем проекте.Я использую это в приложении Mac, но я думаю, что код также будет работать в iOS.

- (void)parseGPX {

    NSString *gpxFilePath = [[NSBundle mainBundle] pathForResource:@"test-gpx" ofType:@"gpx"];

    NSData *fileData = [NSData dataWithContentsOfFile:gpxFilePath];

    [GPXParser parse:fileData completion:^(BOOL success, GPX *gpx) {
        // success indicates completion
        // gpx is the parsed file
        if (success) {
            NSLog(@"GPX success: %@", gpx);

            NSLog(@"GPX filename: %@", gpx.filename);
            NSLog(@"GPX waypoints: %@", gpx.waypoints);
            NSLog(@"GPX routes: %@", gpx.routes);
            NSLog(@"GPX tracks: %@", gpx.tracks);

            [self.theMapView removeAnnotations:self.theMapView.annotations];

            for (Waypoint *thisPoint in gpx.waypoints) {
                // add this waypoint to the map

                MKPointAnnotation *thisRecord = [[MKPointAnnotation alloc] init];
                thisRecord.coordinate = thisPoint.coordinate;
                thisRecord.title = thisPoint.name;

                [self.theMapView addAnnotation:thisRecord];

            }

            for (Track *thisTrack in gpx.tracks) {
                // add this track to the map
                [self.theMapView addOverlay:thisTrack.path];
            }

            [self.theMapView setRegion:[self.theMapView regionThatFits:gpx.region] animated:YES];

        } else {
            NSLog(@"GPX fail for file: %@", gpxFilePath);
        }

    }];

}

- (MKOverlayRenderer*)mapView:(MKMapView*)mapView rendererForOverlay:(id <MKOverlay>)overlay {

    MKPolylineRenderer* lineView = [[MKPolylineRenderer alloc] initWithPolyline:overlay];
    lineView.strokeColor = [NSColor orangeColor];
    lineView.lineWidth = 7;
    return lineView;

}

iOS GPX Framework , упомянутая @Dave Robertson ниже, выглядит хорошо, поэтомуЯ мог бы переключиться на это в какой-то момент.

1 голос
/ 06 января 2012

В настоящее время не существует специального анализатора GPX для Obejective-C.

На самом деле это не проблема, поскольку GPX - это просто XML, поэтому вы можете использовать любой анализатор XML для работы с данными GPX. Взгляните на руководство Рэя Вендерлиха по парсерам iOS XML , где приведены некоторые примеры.

...