2013-03-07 10 views
5

Ho una coordinata di latitudine e longitudine su cui vorrei concentrare la mia mappa. Essi vengono memorizzati come NSStrings e convertiti in località di seguito:Focus MKMapView su NSString Coordinate di latitudine e longitudine con MKCoordinateRegion

NSString *placeLatitude = [elementCoords objectForKey:@"placeLatitude"]; 
NSString *placeLongitude = [elementCoords objectForKey:@"placeLongitude"]; 

CLLocationCoordinate2D location; 
location.latitude = [placeLatitude doubleValue]; 
location.longitude = [placeLongitude doubleValue]; 

Come faccio a modificare il seguito di non concentrarsi sulla posizione corrente dell'utente, ma sulla latitudine e longitudine specificate sopra?

MKCoordinateRegion mapRegion; 
mapRegion.center = mapView.userLocation.coordinate; 
mapRegion.span.latitudeDelta = 0.05; 
mapRegion.span.longitudeDelta = 0.05; 

risposta

5

userei setCenterCoordinate:animated: al fine di spostare il punto di mappa messa a fuoco. Se si sta caricando la vista e vuole avere impostato sulla posizione corretta immediatamente, impostare animated:NO, in caso contrario, se si vuole spostare la mappa per centrare senza problemi su location quindi impostare animated:YES

[mapView setCenterCoordinate:location animated:YES];

Naturalmente , questo non cambierà il livello di zoom della vista mappa. Se si desidera aggiornare il livello di zoom, è necessario utilizzare setRegion:animated:. Ad esempio, se si desidera ingrandire due volte più vicino:

// Halve the width and height in the zoom level. 
// If you want a constant zoom level, just set .longitude/latitudeDelta to the 
// constant amount you would like. 
// Note: a constant longitude/latitude != constant distance depending on distance 
//  from poles or equator. 
MKCoordinateSpan span = 
    { .longitudeDelta = mapView.region.span.longitudeDelta/2, 
     .latitudeDelta = mapView.region.span.latitudeDelta/2 }; 

// Create a new MKMapRegion with the new span, using the center we want. 
MKCoordinateRegion region = { .center = location, .span = span }; 
[mapView setRegion:region animated:YES]; 
+0

Impressionante: come imposto il livello di zoom? – Brandon

+0

Aggiornato la mia risposta, fammi sapere se la sintassi C per la creazione della struttura ha problemi e posso aggiornarla con una versione inline meno di esso. Questo codice è stato scritto usando un compilatore indotto dal cervello :) –

+0

Bah, ho provato a compilare in Xcode e ho scoperto che la mia definizione di struttura non è riuscita, ho aggiornato di nuovo la mia risposta :) –

0

Non impostare la posizione corrente dell'utente come centro mappa centrale. È necessario impostare la vostra coordinata come mappa centro posizione

+0

Grazie, eventuali raccomandazioni su come convertire quello che ho avuto modo di un coordinata singola che può essere utilizzata per questo? – Brandon

+0

Prendere l'oggetto CLLocation e impostarne coordinate.latitudine e coordinate.lunghezza. –

+0

Puoi aggiungere un esempio alla tua risposta :) – Brandon

8
MKCoordinateRegion region; 
    CLLocation *locObj = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake([placeLatitude doubleValue], [placeLongitude doubleValue]) 
                altitude:0 
             horizontalAccuracy:0 
              verticalAccuracy:0 
                timestamp:[NSDate date]]; 
    region.center = locObj.coordinate; 
    MKCoordinateSpan span; 
    span.latitudeDelta = 1; // values for zoom 
    span.longitudeDelta = 1; 
    region.span = span; 
    [self.mapView setRegion:region animated:YES]; 
+0

Ciao, ricevendo una manciata di errori: non può essere allocato staticamente, latitudine della proprietà non trovata sulla collocazione dell'oggetto ... qualsiasi idea – Brandon

+0

aggiorna la mia risposta ora controlla .. – BhushanVU

+0

Chiudi - ottenendo un errore di identificatore previsto al timestamp: linea nil – Brandon

0
CLLocationCoordinate2D location; 
location.latitude = [[[matchingItems objectAtIndex:j] valueForKey:@"latitude"] doubleValue]; 
location.longitude = [[[matchingItems objectAtIndex:j] valueForKey:@"longitude"] doubleValue]; 

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance (location, 2000, 2000); 
[mywebView setRegion:region animated:YES]; 
0

aggiornato per SWIFT 3

let span = MKCoordinateSpan(latitudeDelta: mapView.region.span.latitudeDelta/2, longitudeDelta: mapView.region.span.latitudeDelta/2) 

     // Create a new MKMapRegion with the new span, using the center we want. 
     let region = MKCoordinateRegion(center: location, span: span) 

     mapView.setRegion(region, animated: true) 
Problemi correlati