質問

おい!基本的に、注釈のために座標を逆にしたいと思い、保存された注釈(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を返品の上に置いたとしても、場所を要求するのに十分な時間がありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top