質問

私のアプリを知って、現在のユーザの位置にあCoreLocation.フレームワーク).どのユーザーは新たなMapView彼のiPhone開始の検索のための現在の位置ます。ができるスキップする変更の最初のユーザーの位置mkMapView?

編集:

でき上書きMKMapViewやその他のLocationManager?

役に立ちましたか?

解決

ありができてとは別の位置にマネージャオブジェクトを割り当て、その価値のmapview(ちなみに、私が使っている'='下記のリストとして接頭辞を避けるためのコードフォーマッタからborking).

=ご UIViewController 維持つ別の物件:一る MKMapView 一る CLLocationManager.

=をXIBファイルの MKMapView その他の画面chromeしています。接続のコンセントのコントローラpropeties.確認 MKMapView っていないユーザーの立地です。

=、UIViewControllerを実施 CLLocationManagerDelegate プロトコルを中心に、 locationManager:didUpdateToLocation:fromLocation: 方法されるたびに呼び出される新しい位置の値が可能です。してまいりますので、お気軽に設定、コントローラーとして、委譲のための場所です。

=るviewControllerの loadView 方法、荷重のペン先に MKMapView ます。をユーザからのフィードバックすけ UIActivityIndicatorView スピナーにセットする startAnimating.その開発プロジェクト:

self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
self.locationManager.distanceFilter = 10; // or whatever
[self.locationManager startUpdatingLocation];

=で locationManager:didUpdateToLocation:fromLocation: チェックがイベントを更新しましたし、昨年N秒です。その場所マネージャーが停止し、スピナーを止めを使用してアニメーション化の緯度経度のデータに割り当て地図に沿ってビューを眺間や地域なのでズ-センターを右に。

=この難しい部分:青色の大理石'throbberが特徴のmapview追跡ユーザーの立地です。いて瞬間的に"ニセれまでのインターチ(での使用は別マーカーの現在地を維持位置はお客様にてご用意ください)。個人的にいてのblue marbleのユーザであれば誰もが知ってい

=るようになってこの時の起動を自分で作成する必要がありますカスタムMKAnnotationViewの青色の大理石のグラフィックの場所によって返される場所です。これをスナップショットのMapviewの位置を示しphotoshoppingのblue marble、そのまま使用すると、画像のためのカスタムコます。

=ついて積極的に地図を得ることができるuserlocationとしてご利用いただいておりますmapviewとさせていただくことが、現実のデータは、隠しご設定されたマーカーのようになりましたmapviewを更新中です。その他のオプションをすることで、既存の所長からの受ケが、更新の位置に青色の大理石の注釈ます。

=のmapview自userLocationの更新に追加viewDidLoad:

[self.map.userLocation addObserver:self 
forKeyPath:@"location" 
options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) 
context:NULL];
self.map.showsUserLocation = YES; // starts updating user location

=実施 observeValueForKeyPath.くされたときに呼び出され location 属性のmapviewの userlocation 値:

-(void)observeValueForKeyPath:(NSString *)keyPath 
      ofObject:(id)object 
        change:(NSDictionary *)change 
       context:(void *)context 
{
     if ([self.map isUserLocationVisible]) {
         [self.locationManager stopUpdatingLocation];
         self.ownBlueMarble.hidden = YES;
     }
     // The current location is in self.map.userLocation.coordinate
}

=、暖機が遅れて現在の位置、基準のviewControllerの地図の位置ではなく(奥高尾にひっそりと建つ料亭。メモリを独り占めんリリースできるまでの間MapView負荷のタイルを用意がある。

=で viewWillLoad できるものにおける最後の位置のカスタムbluemarbleアノテーションと表示します。切り替えのuserLocation追跡時の通知と同じhideのアノテーションショーの実大理石のトリックします。のmapview自分の場所にマーキックでのデータは、コマーカーがなくなります。

=ございを実施するviewControllerの viewWillDisappear 方法及び手動でoff userLocation 追跡のmapviewいのでデフォルトでは、次回の眺望がすでに取り上げられていました。また最 userLocation 保存することで取得することができます。そのように、全ての位置のマーカー-ジャグリングの viewWillAppear 方法において心配userLocationに干渉しまいます。

テレビでも展開しております。

他のヒント

コントローラー内:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    CLLocationCoordinate2D coord = {latitude: 37.423617, longitude: -122.220154};
    MKCoordinateSpan span = {latitudeDelta: 1, longitudeDelta: 1};
    MKCoordinateRegion region = {coord, span};
    [mapView setRegion:region];
}

マップが表示されると、パロアルトの近くの中央に配置されます

初期化時に showUserLocation プロパティをfalseに設定してから、マップビューが以前に持っていた region を復元します(以前のマップが破棄される前にこれを保存する必要があります) )。

これはあなたが望んだものですか?

別のロケーションマネージャーを使用する必要はありません。任意のポイントをマップに追加し、他の任意のロジックを使用してそれらを更新できます。

リモートコントロールカーへのソケット接続があり、そのカーがペイロードに位置情報を含むソケットデータを返送したとします。それを解析して、マップ上のサムネイルの位置をリアルタイムで更新できます。 " userLocation"プロパティは必要ありませんが、必要に応じて表示できます。

ユーザーの場所は読み取り専用であり、使用することも使用しないこともできます。だからといって、必要なことをするために別のロケーションマネージャーが必要なわけではありません。あなたのアプリはその機能を本当に必要としないようですが、あなたの質問を誤解している可能性があります。

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