0
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{

    //[_mapview setMapType:MKMapTypeStandard];
    CLLocationCoordinate2D center = _mapview.centerCoordinate;
    double lat = center.latitude;
    double lng = center.longitude;
    NSString *str = [NSString stringWithFormat:@"%f",lat];
    NSString *str1 = [NSString stringWithFormat:@"%f",lng];
    _newlat = str;
    _newlong=str1;

    NSLog(@"%@ %@",_newlat,_newlong);
}

このデリゲート メソッドの外側ではなく、この側で長い緯度値を取得しています。前のクラスにポップオーバーするときに、前のクラスでこの値が必要です。

デリゲートを宣言しましたが、マップをドラッグするたびに呼び出され、前のクラスで値を取得していません。

4

1 に答える 1

0

私が理解している限り、座標を観察していて、新しい座標が来たときに通知されるオブザーバーオブジェクトを設定する必要があります。

CLLocationManagerDelegate クラスで .m

-(void) setLocationObserver:(id) observer
{
   self.locationObserver = observer
}

-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{

    //[_mapview setMapType:MKMapTypeStandard];
    CLLocationCoordinate2D center = _mapview.centerCoordinate;
    double lat = center.latitude;
    double lng = center.longitude;
    NSString *str = [NSString stringWithFormat:@"%f",lat];
    NSString *str1 = [NSString stringWithFormat:@"%f",lng];
    _newlat = str;
    _newlong=str1;

    if ([self.locationObserver respondsToSelector:@selector(setNewCoords:)
        [self.locationObserver setNewCoords:center];

    NSLog(@"%@ %@",_newlat,_newlong);
}

以前のクラス .m で:

-(void)-(void) setNewCoords:(CLLocationCoordinate2D*) location
{
    self.myLocation = location;
    [self doSeomethingWithNewLocation]; // if you wish
}

-(void) doSomethingWithNewLocation
{
    NSString * _newlat = [NSString stringWithFormat:@"%f",self.myLocation.latitude];
    NSString * _newlong = [NSString stringWithFormat:@"%f",self.myLocation.longitude];
}

大まかな例ですが、役立つ場合があります。

于 2012-10-18T10:10:36.200 に答える