2010-12-17 7 views
0

Kann mir jemand sagen, wie man alle Lat, Long Werte zwischen Standorten zu bekommen ... ??? Als Teil der Implementierung möchte ich alle Lat, Long-Werte zwischen dem Start-Ende-Endpunkt haben, um die Route zu zeichnen.Holen Sie sich alle Koordinaten zwischen Standort für iPhone Map Kit

Vielen Dank im Voraus ...

+0

Zuerst weisen Sie einen Puffer mit Platz für Paare aleph_0 koordinieren ... –

Antwort

0

Was meinst du mit "alle"? Da lat/long Paare doppelt sind, sprechen Sie von einer unendlichen Anzahl von Punkten.

Wenn Sie eine Linie zwischen zwei Punkten zeichnen möchten, können Sie mit einem CAShapeLayer eine Linie auf der Karte zeichnen, um sie zu verbinden.

Das Wort "route" führt jedoch dazu, dass Sie wissen möchten, welche Punkte auf einer Straße fahren. Da fragst du nochmal nach was? Routen Menschen könnten fahren? Gehen? Nehmen Sie einen Bus? MapKit selbst hilft Ihnen beim Routing überhaupt nicht, Sie müssten sich andere Frameworks von Drittanbietern ansehen.

+0

Da dieser Link erklärt, wie zeichnen eine Route auf einer Karte, ich vermute, dass Sie wirklich eine Routing-Engine wollen - Sie müssen sich ein SDK wie CloudMade anschauen: http://developers.cloudmade.com/projects/show/routing-http-api –

+0

Waah ... !!! Das ist fantastisch ..!!!! Ich habe nur einen kurzen Blick darauf geworfen ... Ich sollte in der Lage sein, die Aufgabe zu erledigen. Danke vielmals...!!!! – bp581

3

Das Finden der Punkte ist ziemlich einfach und erfordert keine kluge Trigonometrie. Beachten Sie, dass, wenn der Abstand zwischen den Punkten eine bestimmte Menge sein muss - etwa alle 100 Meter - dann ist eine Trigonometrie erforderlich. Wir werden aber die einfache Version machen.

Grundsätzlich ermitteln Sie den Unterschied zwischen den Breiten und der Differenz zwischen den Längen, entscheiden, wie viele Punkte Sie möchten (wie angegeben, "alle" ist eine unendliche Zahl), teilen Sie die Entfernung durch die Anzahl der Punkte und iterieren durch sie. (Anmerkung: Ich habe diesen Code nicht getestet haben, aber Sie sollten die Idee bekommen können.)

// Making my own names for your start and stop coordinate, use your own 
CLLocationCoordinate2D startPoint; // Your starting latitude and longitude 
CLLocationCoordinate2D stopPoint; // Ending latitude and longitude 

CLLocationCoordinate2D newPoint; // A newly-created point along the line 

double latitudeModifier; // Distance to add/subtract to each latitude point 
double longitudeModifier; // Distance to add/subtract to each longitude point 

int numberOfPoints = 100; // The number of points you want between the two points 

// Determine the distance between the lats and divide by numberOfPoints 
latitudeModifier = (startPoint.latitude - endPoint.latitude)/numbernumberOfPoints; 
// Same with lons 
longitudeModifier = (startPoint.longitude - endPoint.longitude)/numbernumberOfPoints; 

// Loop through the points 
for (int i = 0; i < numberOfPoints; i++) { 
    newPoint.latitude = startPoint.latitude + (latitudeModifier * i); 
    newPoint.longitude = startPoint.longitude + (longitudeModifier * i); 

    // Do something with your newPoint here 

} 
+0

danke für die ausführliche Antwort. Der Code funktionierte gut, um die erforderlichen Werte zu erhalten. Aber leider macht es nicht das, was ich erreichen wollte. Die resultierenden Punkte zeichnen eine gerade Linie zwischen Start- und Endpunkt. In dem Beispiel spitzkoff.com/craig/?p=65 werden gekrümmte Linien gezeichnet, seit dem Lat waren lange Werte für alle gekrümmten Orte verfügbar. Irgendeine Idee, wie ich gekrümmte Linien/Route Karte zeichnen kann. Ich danke Ihnen sehr für Ihre Bemühungen, mir bei diesem Problem zu helfen ... !!!! – bp581

+0

Ah, du dachtest auf eine gerade Linie. Sie können die tatsächlichen Straßenrouten über das Google Maps-API abrufen. Sie senden ihm Ihren Start- und Zielort und er sendet Ihnen die komplette Route, Schritt für Schritt, mit den Lat/Long-Paaren für jede Haltestelle (und für kurvige Straßen usw.) sowie die Fahr- oder Laufrichtung. http://code.google.com/apis/maps/documentation/directions/ –

+0

Groß .. !!! Danke vielmals ..!!!! Das funktioniert auch .. !!! – bp581