iPhone获取消除误差的位置信息

 偶然在一个demo中的找到了解决偏差的另外一种方法;<起初转载了篇文章有两种方法>

    

   1, MKMapView *_mapView;

     2,  _mapView.showsUserLocation = YES;//以大头针的形式显示用户的所在位置;
     若[self.view addSubView:_mapview];地图上面会自动标记所在的位置,但是我们这里是想让反向地址编码获取到正确的或者说是对应到地图上面的没有误差的经纬度的位置信息,这里我们可以注释addSubView:即可。
   3,下面我们来获取location信息;_mapView.userLocation.location。

.h

.m
//ViewDidLodad



我的demo里面是让一个按钮点击出发后开始找寻位置,

- (void)findMe:(id)sender{

    self.cllocationManager = [[[CLLocationManageralloc]init]autorelease];

    self.cllocationManager.delegate =self;//对应下面的委托方法121

    self.cllocationManager.desiredAccuracy =kCLLocationAccuracyBest;

    self.cllocationManager.distanceFilter =1.0f;

    [self.cllocationManagerstartUpdatingLocation];

}


//121委托方法,在.h里面记得包含头文件以及相关协议。

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {


    weidu.text = [NSStringstringWithFormat:@"%3.5f",newLocation.coordinate.latitude];

    jingdu.text = [NSStringstringWithFormat:@"%3.5f",newLocation.coordinate.longitude];


    //以上的经度,维度若要对应此newLocation映射到地图上面会有偏移,大家所谓的火星座标;而有时候我们需要方向编码查出响应的位置等信息,获取正确的信息我们可以以来之前申明的

//_mapView.userLocation.location由字面意思及用户的位置信息,包含经度维度,等等

CLGeocoder *geocoder = [[CLGeocoderalloc]init];

    [geocoder reverseGeocodeLocation_mapView.userLocation.locationcompletionHandler:^(NSArray*array,NSError *error) {

        if (array.count > 0) {

            CLPlacemark *placemark = [array objectAtIndex:0];

            NSString *country = placemark.ISOcountryCode;

            NSString *city = placemark.locality;


           NSLog(@"%@",placemark);

        }

    }];

//把placemark写在委托方法里面的意图是让

//    self.cllocationManager.distanceFilter = 1.0f; 距离变动有1m后回调此方法,然而此时我们又可以获取到真实的location。



}


较最上面的第二种方法的好处自认为一开始就可以获取到的正确的location,并且可以设置过滤的精度,1m,或者0.1m。设置大点还可以节省电源。

//没有修正的信息

2012-12-23 01:33:42.819 MapDemo[28470:707]中国四川省成都市青羊区小关庙街37,中国四川省成都市青羊区小关庙街37 @ <+30.66883500,+104.08376400> +/- 100.00m, region (identifier <+30.66883500,+104.08376400> radius 62.07) <+30.66883500,+104.08376400> radius 62.07m

//修正了的信息

2012-12-23 01:31:43.256 MapDemo[28449:707]中国四川省成都市青羊区北书院街,中国四川省成都市青羊区北书院街 @ <+30.66629472,+104.08632278> +/- 100.00m, region (identifier <+30.66684850,+104.08665200> radius 93.92) <+30.66684850,+104.08665200> radius 93.92m

发布了13 篇原创文章 · 获赞 1 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章