-1

我需要做一个 iPhone 应用程序,我应该在其中实现一个 MKMapView 和一个 UISearchBar。如果我在 UISearchBox 中输入一个地点的名称,则应返回相关地点,并且当我们触摸一个地点时必须执行一次地图注释。我需要学习哪些概念来实现它们?我在哪里可以学习有关“MKMapView”和相关概念的概念?

请在您的评论中给我一些链接。以编程方式解释而不使用 Interface Builder 的页面。

提前致谢。

4

2 回答 2

0

您不需要使用 Google 地图 SDK。使用作为苹果自己的库提供的 MapKit.framwork。如果您没有特定的理由使用 Google Map iOS sdk,最好了解 MapKit.framework。当我们比较这两个框架时,各有利弊。但由于您处于初始阶段,我建议使用 MapKit.framwork。

http://www.raywenderlich.com/21365/

您可以使用以下链接学习 UISearchBar 的基础知识。

http://programmerstube.com/mobile/objective-c-tutorial/objective-c-iphone-programming-tutorial-uisearchbar

于 2013-10-25T05:26:06.550 回答
0

我写了简单的例子。尝试使用这个。

  • (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)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {

    }

    -(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; } @结尾

于 2013-10-25T08:58:10.433 回答