3 Stimmen

Wie zeige ich den Standort des Benutzers und zusätzliche Punkte auf einer iPhone-Karte an?

Im Grunde möchte ich dem Benutzer den Standort anzeigen und eine Liste ausgewählter Standorte auf einer Karte zeigen. Es können sogar die standardmäßigen iPhone-Anmerkungen haben. Aber ich habe keine Ahnung von den allgemeinen Schritten, die ich unternehmen würde, um dies zu erreichen. Würde ich MKMapView verwenden, oder Core Location, oder beides? Könnte mir jemand eine einfache Übersicht über die Schritte geben, die zu unternehmen sind, oder einen Link zu einem guten Tutorial oder einem Beispielcode. Vielen Dank

Um es zu erweitern, frage ich mich, ob es irgendwo Beispiele gibt, wie man mit Arrays von Standorten umgeht. Ich vermute, dass ich den Standort des Benutzers identifizieren müsste, dann einen Radius festlegen, wie weit ich Standorte vom Benutzer entfernt referenzieren möchte, dann diesen Radius mit einem Array von Standorten füllen, die sich innerhalb dieses Radius befinden. Sind meine Gedanken dazu richtig? Und gibt es irgendwelche Beispiele dafür, wie man zumindest einen Teil davon macht. Ich habe eine Menge Beispiele gesehen, wie man einen einzelnen Standort anzeigen kann, aber keines, das mit mehreren Standorten umgeht.

5voto

mluisbrown Punkte 13548

Hier ist etwas, das ich verwende und das Ihnen helfen kann. Es wird Ihnen eine MKCoordinateRegion geben, die zu einem Array von CLLocations passt. Sie können dann diese Region verwenden, um sie an MKMapView setRegion:animated weiterzugeben:

// Erstellen einer Region, die alle Standorte darin unterbringt
+ (MKCoordinateRegion) getRegionThatFitsLocations:(NSArray *)locations {
    // Initialisierung der Minimums und Maximums
    CLLocationDegrees minLatitude = 90;
    CLLocationDegrees maxLatitude = -90;
    CLLocationDegrees minLongitude = 180;
    CLLocationDegrees maxLongitude = -180;

    // Festlegung des minimalen und maximalen Breiten- und Längengrads
    // aller Standorte im Array
    for (CLLocation *location in locations) {
        if (location.coordinate.latitude < minLatitude) {
            minLatitude = location.coordinate.latitude;
        }
        if (location.coordinate.latitude > maxLatitude) {
            maxLatitude = location.coordinate.latitude;
        }
        if (location.coordinate.longitude < minLongitude) {
            minLongitude = location.coordinate.longitude;
        }
        if (location.coordinate.longitude > maxLongitude) {
            maxLongitude = location.coordinate.longitude;
        }
    }

    MKCoordinateSpan span;
    CLLocationCoordinate2D center;
    if ([locations count] > 1) {
        // Bei mehr als einem Standort ist die Spanne der Unterschied zwischen
        // minimaler und maximaler Breite und Länge
        span =  MKCoordinateSpanMake(maxLatitude - minLatitude, maxLongitude - minLongitude);
        // und das Zentrum ist das Minimum + die Spanne (Breite) / 2
        center.latitude = minLatitude + span.latitudeDelta / 2;
        center.longitude = minLongitude + span.longitudeDelta / 2;
    } else {
        // Für einen einzelnen Standort erstellen Sie eine feste Spanne (zum Zoomen ziemlich nah)
        span =  MKCoordinateSpanMake(0.01, 0.01);
        // und das Zentrum entspricht den Koordinaten des einzigen Punktes
        // was die Koordinaten des minimalen (oder maximalen) Punktes sein werden
        center.latitude = minLatitude;
        center.longitude = minLongitude;
    }

    // Erstellen einer Region aus dem Zentrum und der Spanne
    return MKCoordinateRegionMake(center, span);
}

Wie Sie wahrscheinlich bereits erkannt haben, müssen Sie MKMapView und Core Location verwenden, um zu erreichen, was Sie wollen. In meiner App weiß ich, welche Standorte ich anzeigen möchte, und mache dann die MKMapView groß genug, um sie alle unterzubringen. Die obige Methode wird Ihnen dabei helfen. Wenn Sie jedoch eine Liste von Standorten erhalten möchten, die in eine bestimmte Kartenregion passen, müssen Sie mehr oder weniger das Gegenteil von dem tun, was ich oben mache.

3voto

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X