天天看点

Swift 百度地图自定义弹出视图

//
//  MapViewController.swift
//  iOS8自适应Cell
//
//  Created by eduo_xiaoP on 14/12/22.
//  Copyright (c) 2014年 eduo. All rights reserved.
//

import Foundation
import UIKit

class MapViewController : UIViewController , BMKLocationServiceDelegate , BMKMapViewDelegate , PaoPaoViewDelegate{
    @IBOutlet var mapView: BMKMapView!
    lazy var locationService: BMKLocationService = {
        let service = BMKLocationService()
        return service
        }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        mapView.showsUserLocation = true
        mapView.delegate = self
        mapView.mapType = UInt(BMKMapTypeStandard)
        
    }
    //MARK: 百度地图添加自定义弹出视图
    func mapViewDidFinishLoading(mapView: BMKMapView!) {
        let annotation = BMKPointAnnotation()
        let coordinate = CLLocationCoordinate2DMake(39.915, 116.404)
        annotation.coordinate = coordinate
        mapView.addAnnotation(annotation)
    }
    
    func mapView(mapView: BMKMapView!, viewForAnnotation annotation: BMKAnnotation!) -> BMKAnnotationView! {
        if annotation is BMKPointAnnotation {
            let pinView = BMKPinAnnotationView(annotation: annotation, reuseIdentifier: "myAnnotation")
            pinView.animatesDrop = true
            pinView.annotation = annotation
            pinView.image = UIImage(named: "pin_green")
            let paopao = NSBundle.mainBundle().loadNibNamed("PaoPaoView", owner: self, options: nil).first as? PaoPaoView
            paopao?.delegate = self
            pinView.paopaoView = BMKActionPaopaoView(customView: paopao)
            return pinView
        }
        return nil
    }
    
    func onClickedPaoPaoView() {
        self.performSegueWithIdentifier("AnnotationToDetail", sender: self)
    }
    
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "AnnotationToDetail" {
            let sourceVC = segue.sourceViewController as MapViewController
            let desVC = segue.destinationViewController as DetailViewController
            desVC.text = "hello world"
        }
        
    }
    
    func mapView(mapView: BMKMapView!, didSelectAnnotationView view: BMKAnnotationView!) {
        println("didSelectAnnotationView")
        mapView.setCenterCoordinate(view.annotation.coordinate, animated: true)
    }
    
    func onClickedPaoPao(btn:UIButton!) ->Void {
        println("onClickedPaoPao")
    }
    
    //MARK: 2.6.0新的定位接口
    func didUpdateBMKUserLocation(userLocation: BMKUserLocation!) {
        mapView.updateLocationData(userLocation)
        let coorinate = userLocation.location.coordinate
        println("lat : \(coorinate.latitude) lng : \(coorinate.longitude)")
        
    }
    //MARK:百度地图的生命周期维护
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        mapView.viewWillAppear()
        locationService.delegate = self
        locationService.startUserLocationService()
    }
    
    override func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)
        mapView.viewWillDisappear()
        locationService.delegate = nil
        locationService.stopUserLocationService()
    }
}