2017-02-20 4 views
-2

を表示しません注釈を追加する:AnnotationViewは、以下に示すように、私は「PlaceAnnotationView」というカスタム注釈ビューを作成し

private func populateNearByPlaces() { 

     var region = MKCoordinateRegion() 
     region.center = CLLocationCoordinate2D(latitude: self.mapView.userLocation.coordinate.latitude, longitude: self.mapView.userLocation.coordinate.longitude) 

     let request = MKLocalSearchRequest() 
     request.naturalLanguageQuery = self.selectedCategory 
     request.region = region 

     let search = MKLocalSearch(request: request) 
     search.start { (response, error) in 

      guard let response = response else { 
       return 
      } 

      for item in response.mapItems { 

       let annotation = PlaceAnnotation() 
       annotation.title = item.name 
       annotation.subtitle = "subtitle" 
       annotation.mapItem = item 

       DispatchQueue.main.async { 
        self.mapView.addAnnotation(annotation) 
       } 


      } 

     } 


    } 

ここにPlaceAnnotatiのコードがありますonView:ここ

import Foundation 
import MapKit 

class PlaceAnnotationView : MKPinAnnotationView { 

    override init(annotation: MKAnnotation?, reuseIdentifier: String?) { 

     super.init(annotation: annotation, reuseIdentifier: reuseIdentifier) 

    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

} 

はPlaceAnnotationのコードです:

輸入財団 輸入MapKit

class PlaceAnnotation : MKPointAnnotation { 

    var mapItem :MKMapItem! 

} 

しかし、私は私の注釈が地図上に表示されているのいずれかが表示されません。 viewForAnnotationは、注釈ごとに複数回発生しますが、画面には何も表示されません。

+0

MKAnnotationをどのように追加しましたか?あなたは私たちにそのコードを表示できますか? –

+0

もっと多くのコードを表示する必要があります。マップビューに注釈を追加する場所を表示します。 PlaceAnnotationViewを表示します。また、注釈ビューが再利用された場合、 'viewForAnnotation'の実装が間違っていることに注意してください。注釈ビューの「注釈」を設定できません。 – matt

+0

@mattコードを更新しました。 viewForAnnotationの実装が意味することが間違っているとわかっているかどうかはわかりません。 –

答えて

1

明らかにするために選択したコードに基づいて、注釈の設定を決して行わないことが問題であるようです。coordinateしかし、注釈のcoordinateが重要ですです。これは、注釈がどのようにして世界にあるべきか、そしてこの注釈に関連付けられた注釈ビューがどのようにマップ上に表示されるかを知る方法を示します。したがって、この注釈に関連付けられた注釈ビューは、ではなく、が地図上のどこに表示されるかを知っています。したがっては表示されませんが表示されます。

+0

ありがとう! Yikes私は注釈の座標を設定するのを忘れていました:) –

関連する問題