2017-05-24 3 views
0

マップ上に配置されたすべてのピンをズームするためのデモを1回行いました。MKMapviewでzoomRectを使用してピンの領域をズームする方法と現在の位置を無効にするイベントをクリックしますか?

1)私はzoomRectをすべてのピンをズームして表示していますが、正しく表示されていません。

2)私の2番目の質問は、私は、私はピンをクリックすると、それは私にそのピンに関するすべての詳細を与え、私の現在の場所だけでなく、すべてのピンを得た しかし、私は現在の場所のピンをクリックするとそれは、をクラッシュしてきましたさ私に解決策を教えてください、私は現在の場所のピンをクリックしたくありません クリックイベントを無効にして削除するにはどうすればいいですか?

私が使用している: -

if (annotation == mapView.userLocation) 
    { 
     return nil; 
    } 

それだけでピンを無効にしないでピンを非表示になります。

私のコードがある

MKMapRect zoomRect = MKMapRectNull; 
     for (id <MKAnnotation> annotation in self.mapViewMap.annotations) 
     { 
      MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate); 
      MKMapRect pointRect = MKMapRectMake(annotationPoint.x , annotationPoint.y ,0.1, 0.1); 
      zoomRect = MKMapRectUnion(zoomRect, pointRect); 
     } 
     [self.mapViewMap setVisibleMapRect:zoomRect animated:YES]; 

画像を出力

ある

enter image description here

予想される出力は

enter image description here

は事前にありがとうございますように、私はあなたが私を与えることを願っています両方の答え。たくさんありがとう。

1の場合

答えて

0

)、あなたはsee documentation そうでないshowAnnotations:animated:機能に組み込まれて使用することができ、あなたはこれを試みることができる:

func zoomToAllAnnotations() { 
    // Exclude if you don't want to include the user's location 
    let annotationPoint = MKMapPointForCoordinate(mapView.userLocation.coordinate) 
    var zoomRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1) 
    for annotation in mapView.annotations { 
     let annotationPoint = MKMapPointForCoordinate(annotation.coordinate) 
     let pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1) 
     zoomRect = MKMapRectUnion(zoomRect, pointRect) 
    } 
    mapView.setVisibleMapRect(zoomRect, animated: true) 
} 

)2について、あなたはcurrentLocation注釈のためのpinView.canShowCallout = falseを試みることができます。ここにはlink to documentationがあります。

関連する問題