我需要做一个 iPhone 应用程序,我应该在其中实现一个 MKMapView 和一个 UISearchBar。如果我在 UISearchBox 中输入一个地点的名称,则应返回相关地点,并且当我们触摸一个地点时必须执行一次地图注释。我需要学习哪些概念来实现它们?我在哪里可以学习有关“MKMapView”和相关概念的概念?
请在您的评论中给我一些链接。以编程方式解释而不使用 Interface Builder 的页面。
提前致谢。
我需要做一个 iPhone 应用程序,我应该在其中实现一个 MKMapView 和一个 UISearchBar。如果我在 UISearchBox 中输入一个地点的名称,则应返回相关地点,并且当我们触摸一个地点时必须执行一次地图注释。我需要学习哪些概念来实现它们?我在哪里可以学习有关“MKMapView”和相关概念的概念?
请在您的评论中给我一些链接。以编程方式解释而不使用 Interface Builder 的页面。
提前致谢。
您不需要使用 Google 地图 SDK。使用作为苹果自己的库提供的 MapKit.framwork。如果您没有特定的理由使用 Google Map iOS sdk,最好了解 MapKit.framework。当我们比较这两个框架时,各有利弊。但由于您处于初始阶段,我建议使用 MapKit.framwork。
http://www.raywenderlich.com/21365/
您可以使用以下链接学习 UISearchBar 的基础知识。
我写了简单的例子。尝试使用这个。
(void)viewDidLoad { [超级 viewDidLoad];
mapView = [[MKMapView alloc] initWithFrame:self.view.frame];
mapView.delegate = self;
mapView.showsUserLocation = YES;
mapView.zoomEnabled = YES;
mapView.scrollEnabled = YES;
mapView.rotateEnabled = YES;
// mapView.pitchEnabled = YES;
[self moveMapViewToLocation:mapView.userLocation.location];
[self zoomMapViewToLocation:mapView.userLocation.coordinate];
[self.view addSubview:mapView];
} -(void)zoomMapViewToLocation:(CLLocationCoordinate2D)location { if(location.longitude <= -180 || location.latitude <= -180) { return; }
MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta = 0.004;
span.longitudeDelta = 0.004;
region.span=span;
region.center=location;
[mapView setRegion:region animated:TRUE];
[mapView regionThatFits:region];
}
-(void)moveMapViewToLocation:(CLLocation*)location { MKCoordinateRegion 区域;
region.span = mapView.region.span;
region.center = location.coordinate;
[mapView setRegion:region animated:TRUE];
[mapView regionThatFits:region];
}
}
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { [self zoomMapViewToLocation:userLocation.coordinate]; }
(void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views { for(MKAnnotationView *annotationView in views) { if(annotationView.annotation == mv.userLocation) { [self zoomMapViewToLocation:mv.userLocation.location.coordinate ]; } } }
(void)onGestureEventFire:(id)sender { if(mapView.mapType == MKMapTypeStandard) mapView.mapType = MKMapTypeSatellite; 否则 mapView.mapType = MKMapTypeStandard; } @结尾