標記一個位置點的view ----》marker或者pin
點擊marker後彈出的view ---》CalloutView
marker和calloutView都是一個annotation,一個annotation對應一個view即markerView和calloutView,所以自定義callout view時先自定義兩個view對應的annotation分別為:CustomPinAnnotation和CustomCalloutAnnotation,pinAnnotation的彈出view用系統的就可以了,一般只要換一個image,再自定義一個calloutAnnotation的彈出view:CustomCalloutView
基本思路如下:
當調用MKMapView的andAnnotation添加一個marker(CustomPinAnnotation)時,系統會回調MKMapView的delegate中的viewForAnnotation方法,返回標記要顯示的marker的view(return 一個系統的)。當點添加的marker時,系統會調delegate中的didSelectAnnotationView方法,我們再調用addAnnotation添加一個CustomCalloutAnnotation,調了這個方法後,系統又會回調viewForAnnotation方法,我們再返回我們自定義的CustomCalloutView就大功告成了。。
例子效果如下: