iPhone應(yīng)用地圖開發(fā)教程
iPhone應(yīng)用地圖開發(fā)教程是本文要介紹的內(nèi)容,文章講述的是一個有趣的實(shí)例。不多說,我們之間來看詳細(xì)內(nèi)容介紹。
1,計(jì)算兩點(diǎn)之間的距離
- [locationManager startUpdatingLocation];(已格式化成如12.34 km):
- [NSString stringWithFormat:@"%0.2f km",[userLocation getDistanceFrom:location]/1000]
2,在處理MKAnnotationView時(shí),都要判斷對應(yīng)annotation是不是MKUserLocation這個顯示用戶當(dāng)前位置的藍(lán)點(diǎn),以避免誤操作。
- [annotation isKindOfClass:[MKUserLocation class]]
3、
- - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
這個delegate函數(shù)一般會在給MKMapView對象添加 annotations后馬上執(zhí)行,但執(zhí)行不會馬上結(jié)束。如果在它完成之前就調(diào)用
- [mapView viewForAnnotation:someAnnotation];
的話,會返回nil的結(jié)果,這時(shí)對這個返回的nil做任何操作都不會在屏幕上顯示……
4,MKMapView放大縮小時(shí),需要注意的是放大,至少放大2倍以上才會被執(zhí)行。
- - (IBAction)doZoomIn:(id)sender{//放大
- MKCoordinateRegion region = mMapView.region;
- regionregion.span.latitudeDelta=region.span.latitudeDelta * 0.4;
- regionregion.span.longitudeDelta=region.span.longitudeDelta * 0.4;
- [mapView setRegion:region animated:YES];
- }
- - (IBAction)doZoomOut:(id)sender{//縮小
- MKCoordinateRegion region = mMapView.region;
- regionregion.span.latitudeDelta=region.span.latitudeDelta * 1.3;
- regionregion.span.longitudeDelta=region.span.longitudeDelta * 1.3;
- [mapView setRegion:region animated:YES];
- }
5, 下面隨便列一些其他沒提到的代碼,供搜索引擎搜索
- CLLocationCoordinate2D coordinate;
- //Location Paris
- coordinate.latitude = 48.856660;
- coordinate.longitude = 2.350996;
- MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(coordinate, distance, distance);
- MKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];
- [mapView setRegion:adjustedRegion animated:animated];
6,問 題:
發(fā)現(xiàn)MKAnnotationView的Callout View有bug。
我在后臺更新subtitle后,若不手動點(diǎn)一下其他 MKAnnotationView再點(diǎn)回之前已經(jīng)顯示Calloutview的MKAnnotationView的話,那這個 MKAnnotationView的Calloutview里的subtitle就不會被更新……
說清楚點(diǎn)就是:點(diǎn)了某個大頭針顯示信息后,若這時(shí)后臺更新了它的subtitle,然后你再點(diǎn)這個大頭針會發(fā)現(xiàn)它的subtitle顯示成了一個空白。這時(shí)得點(diǎn)一下其他大頭針,再點(diǎn)回來,原來那個大頭針的信息才是完整的。
雖然有個notification是 MKAnnotationCalloutInfoDidChangeNotification,但SDK手冊里說這個已經(jīng)不能用了。我嘗試用了一下也沒有任何效果……
不知道還有其他方法沒。
小結(jié):iPhone應(yīng)用地圖開發(fā)教程的內(nèi)容介紹完了,希望本文對你有所幫助!