iPhone应用地图开发教程是本文要介绍的内容,文章讲述的是一个有趣的实例。不多说,我们之间来看详细内容介绍。
1,计算两点之间的距离
- [locationManager startUpdatingLocation];(已格式化成如12.34 km):
- [NSString stringWithFormat:@"%0.2f km",[userLocation getDistanceFrom:location]/1000]
2,在处理MKAnnotationView时,都要判断对应annotation是不是MKUserLocation这个显示用户当前位置的蓝点,以避免误操作。
- [annotation isKindOfClass:[MKUserLocation class]]
3、
- - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
这个delegate函数一般会在给MKMapView对象添加 annotations后马上执行,但执行不会马上结束。如果在它完成之前就调用
- [mapView viewForAnnotation:someAnnotation];
的话,会返回nil的结果,这时对这个返回的nil做任何操作都不会在屏幕上显示……
4,MKMapView放大缩小时,需要注意的是放大,至少放大2倍以上才会被执行。
- - (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,问 题:
发现MKAnnotationView的Callout View有bug。
我在后台更新subtitle后,若不手动点一下其他 MKAnnotationView再点回之前已经显示Calloutview的MKAnnotationView的话,那这个 MKAnnotationView的Calloutview里的subtitle就不会被更新……
说清楚点就是:点了某个大头针显示信息后,若这时后台更新了它的subtitle,然后你再点这个大头针会发现它的subtitle显示成了一个空白。这时得点一下其他大头针,再点回来,原来那个大头针的信息才是完整的。
虽然有个notification是 MKAnnotationCalloutInfoDidChangeNotification,但SDK手册里说这个已经不能用了。我尝试用了一下也没有任何效果……
不知道还有其他方法没。
小结:iPhone应用地图开发教程的内容介绍完了,希望本文对你有所帮助!