Annotationのサブタイトルとして路上住所を設定します
-
14-10-2019 - |
質問
おい!基本的に、注釈のために座標を逆にしたいと思い、保存された注釈(Storposition)のサブタイトルとしてアドレスを表示します。どうすればいいのかわからない...何が間違っているの?
編集; .m
-(NSString *)subtitle{
return subtitle;
- (void)setCoordinate:(CLLocationCoordinate2D)c {
MKReverseGeocoder *rvg = [[MKReverseGeocoder alloc] initWithCoordinate:c];
rvg.delegate = self;
[rvg start];
coordinate = c;
}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark {
self.subtitle = [placemark.addressDictionary valueForKey:@"Street"];
}
解決
// edit2:問題を解決し、独自の座標セッターを実装し、そこにリバースジオコーダーをリクエストするかもしれません。
-(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"];
}
// オリジナル:
最初にあなたのバグについて話しましょう:d
return [NSString stringWithFormat:@"%f", streetAddress];
%f
フロート値用であるため、文字列は表示されません。
2番目、変数 streetAddress
現時点では、ヘッダーファイルに記述してアクセスできるようにする必要があります。
その後 initWithCoordinate:
あなたが呼ぶ return self;
このラインの後のすべてのものは決して呼ばれません。だからあなた ReverseGeocoder
決して始めないでください。
NSString *streetAddress = …
ここでは、アドレスを保存したいのですが、この方法にのみ存在する変数に書き込みます。メソッドが完了した後、この変数はリリースされます。ヘッダーファイルで定義した場合、クラスワイド変数に保存します。
それでは、あなたがそれを行う方法について話しましょう。私がやることは、アノテーションからリバースジオコーダーを配置し、MapViewコントローラーに入れることです。次に、新しい場所を取得すると、注釈のサブタイトルを変更します。
[[mapView.annotations objectAtIndex:0] setSubtitle:@"Address Information"];
//編集:ログを記録できます didFailWith
そして、あなたは彼がポジションを要求できないことがわかります。リバースGeoCoder-Initを返品の上に置いたとしても、場所を要求するのに十分な時間がありません。
所属していません StackOverflow