//EDIT2: บางทีนั่นอาจช่วยแก้ปัญหาของคุณได้ ใช้ตัวกำหนดพิกัดของคุณเองและขอ Reverse Geocoder ของคุณที่นั่น:
-(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"];
}
// ORIGINAL:
ก่อนอื่นเรามาพูดถึงข้อบกพร่องของคุณกันดีกว่า :D
return [NSString stringWithFormat:@"%f", streetAddress];
%f
ใช้สำหรับค่า float ดังนั้นจึงจะไม่แสดงสตริง
อย่างที่สอง ตัวแปร streetAddress
ของคุณไม่มีอยู่ในขณะนี้ คุณควรทำให้สามารถเข้าถึงได้โดยการเขียนลงในไฟล์ส่วนหัวของคุณ
จากนั้นใน initWithCoordinate:
คุณโทร return self;
ทุกสิ่งหลังจากสายนี้ไม่เคยถูกโทร ดังนั้น ReverseGeocoder
ของคุณอย่าเริ่มเลย
NSString *streetAddress = …
ที่นี่คุณต้องการบันทึกที่อยู่ของคุณ แต่คุณเพียงเขียนลงในตัวแปรซึ่งมีอยู่ในวิธีนี้เท่านั้น หลังจากเมธอดนี้เสร็จสิ้น ตัวแปรนี้ก็จะรีลีส คุณจะบันทึกมันลงในตัวแปรคลาสของคุณหากคุณได้กำหนดมันไว้ในไฟล์ส่วนหัวของคุณ
ตอนนี้เรามาพูดถึงวิธีที่คุณสามารถทำได้ สิ่งที่ฉันจะทำคือนำ geocoder แบบย้อนกลับออกจากคำอธิบายประกอบของคุณ และใส่ไว้ในตัวควบคุม mapView ของคุณ จากนั้น หากคุณได้รับตำแหน่งใหม่ คุณจะเปลี่ยนชื่อคำบรรยายของคำอธิบายประกอบของคุณ
[[mapView.annotations objectAtIndex:0] setSubtitle:@"Address Information"];
//แก้ไข: คุณสามารถบันทึก didFailWith
ของคุณได้ และคุณจะเห็นว่าเขาไม่สามารถขอตำแหน่งได้ แม้ว่าคุณจะใส่ ReverseGeocoder-init ไว้เหนือการส่งคืน แต่ก็ยังมีเวลาไม่เพียงพอที่จะขอตำแหน่ง
person
Community
schedule
29.12.2010