2012-03-28 3 views
1

Ich habe eine Reihe von Ländernamen und möchte sie auf einem MKMapView als Ortsmarken platzieren. Wenn also zum Beispiel Frankreich im countryName-Array ist, möchte ich eine Stecknadel in der Mitte von Frankreich platzieren.MKMapView Platzieren Sie einen Pin in einem Land mit seinem Namen

Gibt es eine Möglichkeit, dies zu tun, ohne das lat/long für jedes Land gespeichert zu haben?

Ich möchte diese Arbeit offline machen und nur die Karte in seinem grundlegendsten und vollständig herausgezoomten Bild der Welt erfordern.

Ich glaube, dass MKMapView einige grundlegende Geoinformationen enthält, also ist das obige ohne die Verwendung von GLGeocoder und einer Internetverbindung möglich?

+0

Das integrierte MKMapView funktioniert nicht offline - eine schnelle Lösung wäre es, ein Karten-Overlay mit einer einfachen Weltkarte hinzuzufügen, wenn keine Internetverbindung besteht. –

+0

@NielsCastle Wenn ich das iPad in den Flugzeugmodus setze und dann einen Viewcontroller mit einem hinzugefügten MKMapView lade, erhält man die grundlegende Weltkarte, aber beim Zoomen keine Daten, was gut ist, da ich das Zoomen deaktivieren möchte . Es sei denn, was ich sehe, ist zwischengespeicherte Daten? –

+0

Ich weiß nicht, ob es einen speziellen Fall für die Top-Level-Map gibt, der sicherstellt, dass die oberste Ebene immer verfügbar ist ... aber ich kann mich nicht erinnern, in den Dokumenten irgendeine Erwähnung davon gesehen zu haben. Ich würde zögern, mich darauf zu verlassen. –

Antwort

3

versuchen, diese Funktion für get geografische Breite und Länge Adresse :-(wenn Sie Namen Land verwenden wir dann für das jeweilige Land Zentrum lat Gaul lange erhalten)

-(CLLocationCoordinate2D) getLocationFromAddressString:(NSString*) countryStr { 
    NSString *urlAddressStr = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", 
                           [countryStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    NSString *locationStr = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlAddressStr]]; 
    NSArray *items = [locationStr componentsSeparatedByString:@","]; 

    double lat = 0.0; 
    double long = 0.0; 

    if([items count] >= 4 && [[items objectAtIndex:0] isEqualToString:@"200"]) 
    { 
        lat = [[items objectAtIndex:2] doubleValue]; 
        long = [[items objectAtIndex:3] doubleValue]; 
    } 
    CLLocationCoordinate2D location; 
    location.latitude = lat; 
    location.longitude = long; 

    return location; 
} 

nach Breitengrad und Längengrad 1 erhalten) verwenden Sie die MapKit Rahmen

3) Satz geografische Breite und Länge auf

Region hinzufügen

3) Mit dieser Funktion können

- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id)annotation 
+0

Danke für Ihre Antwort, aber diese Methode beruht auf einer Internetverbindung, um die Suche durchzuführen. Es half bei der Einstellung Lat & Long in CLLocationCoordinate2D –

+0

Vielen Dank – Deepesh

1

Diese Methode funktioniert nur, wenn Sie die Datendatei (sqlite) in der Anwendung speichern und die Datenbank abfragen, während Sie die Pins in der Map platzieren. Aber es wird die Verfügbarkeit der Kartendaten im Offline-Modus garantieren.

Grundsätzlich können Sie die Verwendung der Formdatei verfügbar http://thematicmapping.org/downloads/world_borders.php

Import als SQLite-Datei mit dem Befehl .loadshp machen beschrieben http://www.gaia-gis.it/gaia-sins/spatialite-tutorial-2.3.1.html

Sobald Sie die SQLite-Datei importiert haben, können Sie nur etwas fragen wie

select lon,lat from world_borders where name like 'Zambia'; 

wo

lon = longitude, 
lat = latitude, 
world_borders = table name 
and 'Zambia' = country name. 
+0

Um Ihnen den Ärger zu ersparen, habe ich die Datei in die SQLite-Datei importiert https://github.com/nhisyam/World-Borders – nhisyam

+0

Vielen Dank, Das beantwortet meine Frage nicht wirklich, aber es ist eine große Hilfe. Dies gibt mir eine vollständige Länderliste und die relevanten Lat/Longs, die ich auch brauchte. :) –

+0

Froh, dass es hilft. =) – nhisyam