2012-01-10 16 views
4

私は2つのビューコントローラ:tweetViewControllerMapViewControllerを持っています。前者はユーザがツイートを投稿するためのもので、その中に私はCLLocationManagerを使用してユーザの場所を取得します。 locationManager:didUpdateToLocation:fromLocation:が呼び出されると、私は "locationA"を取得しました。彼の位置が設定されていることをユーザーに思い出させます。iOS:CLLocationManagerから取得した位置とMKMapViewのuserLocationプロパティの違い

ユーザーは「locationA」でツイートを投稿できます。または、位置情報をクリックして位置を手動で変更します(場所が正確でない場合に備えて)。この場合、MapViewControllerがプッシュされ、locationAに関連付けられたドラッグ可能なピン注釈がマップに落ちます。ピンは私がどこから数百メートル離れているのがわかりました。次に、mapView.showUserLocation = YESを設定します。そして私は、青い泡の位置がピンよりはるかに正確であることを発見しました。ですから、私の質問は、CLLocationManagerからの位置ではなく、tweetViewControllerのmapViewのuserLocationを取得する方法です。

私は中国にいるので、同じ問題を探しています。一部の人々は中国の地図が変形されていると言っているので、オフセットがあるはずです。問題に対処するための提案はありますか? ありがとうございます。

+0

ロケーションマネージャの精度と距離フィルタの設定を正しく設定しましたか?通常はデフォルトが最良の精度を与えます。また、デリゲートイベントに基づいて場所を正しく更新していますか? CLLocationManagerを使用して位置を更新すると、連続した近似(セルラー信号、GPS信号)または最初に返された位置が非常に不正確になることがあります。 old):常に "newLocation"タイムスタンプをチェックし、現在の日付と比較します。 – viggio24

+0

私はdesiredAccuracy = kCLLocationAccuracyBestとdistanceFilter = 5.0fを設定しました。これは十分正確だと思います。私は5回のように、何回か呼び出されたデリゲートメソッドを取得することができますし、その場所は安定しています。デリゲートの呼び出しはもう必要ありません。次にmapViewControllerを押します。しかし、locationManagerの位置は、mapViewのuserLocationから数百メートル離れています...何か手掛かり? –

答えて

0

CLLocationManagerは、すべてのインスタンスで同じデータを使用します。 MKMapViewCLLocationManagerのデータを内部的に使用します。あなたがしたいことをするための解決策は、MKMapViewshowUserLocation:に関してそれ自身のことをさせるということです。同時に、CLLocationManagerとその代理人のインスタンスを作成します。

デリゲートメッセージは、MKMapViewの青色のピンのGPS座標位置を示します。すべてがお互いに同期します。

+0

こんにちはVinay、あなたの答えをありがとう。私はまだ質問がある、私の場合は、ユーザーが "場所の変更"ボタンをクリックしない場合、mapViewControllerがありません。また、同じCLLocationManagerのデータを使用すると、2つの座標が異なるのはなぜですか?それはMKMapView座標のいくつかの調整を行うと言われていますか? –

+0

あなたの答えを紹介していただければ幸いです。参照:http://stackoverflow.com/a/2319673/3826773 – orhankutlu

2

最後に、 私はこの問題を解決するためにMKMapViewインスタンスを使用します。

ユーザーの場所を取得するために

-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 

を使用して

mapView.showUserLocation = YES/NO; //to start/stop locating.

を設定します。私のコントローラでは、mapViewは表示されていませんが、それはユーザーの場所を取得するためにのみ使用され、場所はlocManagerよりも正確です。

関連する問題