2017-03-28 17 views
0

私は最近、マップキットからマップボックスに変更することを決めました。私の注釈はマップ内に実装されていますが、注釈をクリックすると何らかの理由で注釈の吹き出しが表示されません。私はかなり混乱しており、なぜこれが現れていないのか不明です。うまくいけば誰かが助けることができます!適切なコードを以下に示します。マップボックス注釈吹き出し

import UIKit 
import Firebase 
import Mapbox 

class ViewController: UIViewController, SideBarDelegate, MGLMapViewDelegate { 


@IBOutlet weak var mapView: MGLMapView! 


//Filtering annotations for sidebar 

func sideBarDidSelectButtonAtIndex(_ index: Int) { 
    mapView.removeAnnotations(mapView.annotations!) 

    for park in skateparks { 

     if index == 0 { 
      addAnnotation(park: park) 
     } 

     if index == 1 && park.type == .park { 
      addAnnotation(park: park) 
     } 

     if index == 2 && park.type == .street { 
      addAnnotation(park: park) 
     } 


    } 

} 

var sideBar: SideBar = SideBar() 

var skateparks = [Skatepark]() 

let locationsRef = FIRDatabase.database().reference(withPath: "locations") 

override func viewDidLoad() { 
    super.viewDidLoad() 


    //Location 

    mapView.delegate = self 
    mapView.showsUserLocation = true 

    //Sidebar 

    sideBar = SideBar(sourceView: self.view, skateItems: ["All Skate Spots", "Skateparks", "Street Skating"]) 
    sideBar.delegate = self 


    // Passing firebase annotation data 

    locationsRef.observe(.value, with: { snapshot in 
     self.skateparks.removeAll() 

     for item in snapshot.children { 
      guard let snapshot = item as? FIRDataSnapshot else { continue } 

      let newSkatepark = Skatepark(snapshot: snapshot) 

      self.skateparks.append(newSkatepark) 

      self.addAnnotation(park: newSkatepark) 
     } 
    }) 
} 

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    view.sendSubview(toBack: mapView) 
} 


func addAnnotation(park: Skatepark) { 

    let point = MGLPointAnnotation() 

    point.coordinate = park.coordinate 

    point.title = park.name 

    point.subtitle = park.subtitle 

    mapView.addAnnotation(point) 

    mapView.selectAnnotation(point, animated: true) 

} 
} 

func mapView(mapView: MGLMapView, viewForAnnotation annotation: MGLAnnotation) -> MGLAnnotationView? { 
return nil 
} 


func mapView(mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool { 
return true 
} 
+0

アノテーション用のデリゲートを実装しましたか? –

+0

ちょっとTushar、私は持っている! –

+0

あなたはこれをワンスチェックすることができます。https://www.mapbox.com/help/first-steps-ios-sdk/ –

答えて

1

UPDATE YOUR SWIFT 3 FUNCTIONS-:

func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool { // Always try to show a callout when an annotation is tapped. return true } 


func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 

} 
+0

私は関数を更新しましたが、コールアウトはまだ見えません! –

+0

ブレークポイントを設定し、呼び出されるかどうかをチェックできますか? –

+0

@John Smith私は再び機能を更新しました。 –

1

あなたは(あなたはすでにそれを見ていない場合)便利this exampleを見つけることができます! Mapboxコールアウトデリゲートの使用方法を示します。

関連する問題