2014-07-17 19 views
5

Utilizzando MKMapRectMake per creare MKMapRect provoca la compilazione di errore come di seguito:MKMapRectMake a Swift causa errore di linker durante la compilazione

Questo è il mio codice:

var lat = 37.33072 
    var lon = -122.029674 
    var loc = CLLocationCoordinate2D(latitude: lat, longitude: lon) 
    var point = MKMapPointForCoordinate(loc) 

    var flyTo = MKMapRectMake(point.x, point.y, 0, 0); 

e questo è l'errore del compilatore:

Undefined symbols for architecture i386: 
    "_MKMapPointMake", referenced from: 
     _MKMapRectMake in ViewController.o 
    "_MKMapSizeMake", referenced from: 
     _MKMapRectMake in ViewController.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

La mia soluzione è creare MKMapRect utilizzando i parametri di origine e dimensione. Nota che ho aggiunto MKMapKit alle librerie collegate in Fasi di costruzione

C'è qualcuno che incontra lo stesso problema e come lo risolvi? coordinate

+0

Assicurarsi che i parametri abbiano lo stesso tipo accettato dalla funzione. Devono essere valori "doppi". – CainaSouza

+0

Sembra essere un bug nella versione beta corrente. Puoi provare la soluzione alternativa al bridge Objective-C/Swift mostrata in [questa risposta] (http://stackoverflow.com/questions/24128723/scnphysicsworld-error) come soluzione temporanea. In sostanza, esegui le chiamate di MKMapRect in Objective-C e chiama i tuoi metodi bridge da Swift. – Anna

+0

Grazie. Questa potrebbe essere un'altra opzione da provare. – tala9999

risposta

-2

var: CLLocationCoordinate2D var boundingMapRect: MKMapRect

questi due sono le proprietà richieste per MKOverlay, aggiungerli.

1

modificare questo var flyTo = MKMapRectMake (point.x, point.y, 0, 0);

a

var flyTo = MKMapRect (origine: MKMapPointMake (x: point.x, y: punto.Ý), dimensione MKMapSizeMake (larghezza: 0, altezza: 0))

MKMapRect ha un origine e dimensione argomento, che vi manca

MKMapRect (origine: MKMapPointMake (x :, y:), dimensione MKMapSizeMake (larghezza: altezza:))

7

Work around con una funzione di utilità:

func myMKMapRect(x: Double, y:Double, w:Double, h:Double) -> MKMapRect { 
    return MKMapRect(origin:MKMapPoint(x:x, y:y), size:MKMapSize(width:w, height:h)) 
} 

E presentare un bug report con Apple, ovviamente.

Problemi correlati