-1

私のmapViewアプリケーションでは、注釈を作成しようとしています。注釈を追加せずにmapViewを取得していますが、注釈を追加しようとすると、注釈マークのみが表示され、マップが非表示になります。

注釈を追加する前に:

コード:

 [super viewDidLoad];
mapView = [[MKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, elf.view.frame.size.height)];
mapView.showsUserLocation = YES;
mapView.mapType = MKMapTypeStandard;
mapView.delegate = self;
[self.view addSubview:mapView]; 

画像:

ここに画像の説明を入力
注釈を追加した後:

コード:

 [super viewDidLoad];
    mapView = [[MKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, self.view.frame.size.height)];
    mapView.showsUserLocation = YES;
    mapView.mapType = MKMapTypeStandard;
    mapView.delegate = self;
    [self.view addSubview:mapView]; 



    MKUserLocation *userLocation = mapView.userLocation;
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate, 20, 20);
    [mapView setRegion:region];

   MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init];
    annotation.coordinate = userLocation.location.coordinate;
    annotation.title = @"Here you r";
    annotation.subtitle = @"Pondy";
    [mapView addAnnotation:annotation];

画像:

ここに画像の説明を入力

地図に注釈を表示する必要があります。前もって感謝します。

4

5 に答える 5

2

MKCoordinateRegionMakeWithDistance の値を変更してみてください。

于 2013-10-25T10:33:07.087 に答える
1

その理由は、シミュレーターの場所が NONE に設定されているためです。

次の手順に従ってください。答えが得られます... `

          1) Open your simulator. 
          2) go to Debug menu
          3) Select Location.
          3) Select Custom Location. (OR Select location of Apple to skip step
          No 4.)
          4) Enter your Latitude and Longitude.
          5) Delete your app from simulator.
          6) Run your project again.

`

楽しみ....

于 2013-10-25T10:42:08.737 に答える
1

上記のように、ブルー スクリーンは通常、現在の場所が海にあることを意味します。取得している現在地が正しいかどうかを確認してください。

通常、MKMap で現在の位置を表示するには、map.showuserlocation=YES と記述します。現在の位置のマップで注釈ピンを変更する必要がある場合は、マップ ビューに青い点が表示されます。注釈メソッドのビューに移動して、 userlocation クラスであるため、userlocation アノテーションのピンを変更します。

于 2013-10-25T10:43:23.180 に答える
1

現在の場所の注釈を追加します...スパン20、20を配置します。これは非常に近いため、ロードに少し時間がかかります

    mapView1.showsUserLocation = YES;

    MKUserLocation *userLocation = mapView1.userLocation;
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate, 200, 200);
    [mapView1 setRegion:region];

MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init];
        annotation.coordinate = userLocation.location.coordinate;
        annotation.title = @"Title";
        annotation.subtitle = @"Sub Title";
        [mapView1 addAnnotation:annotation];

私はそれがあなたのために働くことを願っています

于 2013-10-25T11:54:09.473 に答える
1

注釈を追加した時点では、ユーザーの場所はまだ不明だと思います。

MKUserLocation *userLocation = mapView.userLocation;
// At that time maybe the userLocation hasn't been retrieved through the GPS yet
...
MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init];
annotation.coordinate = userLocation.location.coordinate;
annotation.title = @"Here you r";
annotation.subtitle = @"Pondy";
[mapView addAnnotation:annotation];

その場合、注釈の位置は 0, 0 になり、マップ リージョンも mapView からのユーザーの位置に基づいているため、位置 0,0 の海の真ん中で終了します。

mapView のユーザー位置の変更を監視し、mapView によって指定されたものが正しいことが確実な場合にのみ、ピンおよび/またはマップ領域を再調整するには、このセレクターのプロトコルをuserLocation実装するだけです。MKMapViewDelegate

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

次に、実装の本体で、以前に行ったことを行いますが、ユーザーの場所が正しいかどうかを確認し、ユーザーの場所が正しいことを確認してから、マップ領域と注釈を調整することができます。

于 2013-10-28T21:04:40.547 に答える