//EDIT2: mungkin itu menyelesaikan masalah Anda, terapkan penyetel koordinat Anda sendiri dan minta geocoder terbalik Anda di sana:
-(NSString *)subtitle{
if (!subtitle) {
return @"No Street";
} else {
return subtitle;
}
}
-(NSString *)title{
return @"Saved position";
}
- (void)setCoordinate:(CLLocationCoordinate2D)c {
MKReverseGeocoder *rvg = [[MKReverseGeocoder alloc] initWithCoordinate:c];
rvg.delegate = self;
[rvg start];
coordinate = c;
}
-(id)initWithCoordinate:(CLLocationCoordinate2D) coor{
self.coordinate=coor;
NSLog(@"%f,%f",coor.latitude,coor.longitude);
return self;
}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error {
NSLog(@"fail %@", error);
}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark {
self.subtitle = [placemark.addressDictionary valueForKey:@"Street"];
}
// ASLI:
Pertama mari kita bicara tentang bug Anda :D
return [NSString stringWithFormat:@"%f", streetAddress];
%f
adalah untuk nilai float, sehingga tidak akan menampilkan string.
Hal kedua, variabel Anda streetAddress
tidak ada saat ini, Anda harus membuatnya dapat diakses dengan menuliskannya di file header Anda.
Kemudian di initWithCoordinate:
Anda memanggil return self;
semua hal setelah saluran ini tidak pernah dipanggil. Jadi ReverseGeocoder
Anda tidak pernah dimulai.
NSString *streetAddress = …
Di sini Anda ingin menyimpan alamat Anda tetapi Anda hanya menuliskannya ke dalam variabel yang hanya ada dalam metode ini. Setelah metode selesai, variabel ini akan dirilis. Anda akan menyimpannya ke variabel luas kelas Anda jika Anda telah mendefinisikannya di file header Anda.
Sekarang mari kita bicara tentang cara bagaimana Anda bisa melakukan itu. Apa yang akan saya lakukan adalah mengeluarkan geocoder terbalik dari anotasi Anda dan meletakkannya di pengontrol mapView Anda. Kemudian jika Anda mendapatkan lokasi baru, Anda mengubah subtitle anotasi Anda.
[[mapView.annotations objectAtIndex:0] setSubtitle:@"Address Information"];
//EDIT: Anda dapat mencatat didFailWith
Anda dan Anda akan melihat bahwa dia tidak dapat meminta posisi tersebut. Meskipun Anda meletakkan reverseGeocoder-init di atas return, waktu untuk meminta lokasi masih belum cukup.
person
Community
schedule
29.12.2010