MKMapView 点击地图上的商店,显示和系统一样的效果

RT
现在是,点击图中的天赋广场,根本就没反应

1、新建项目,将ios的提供位置服务和地图服务的库加入到项目中点项目名-gt;BuildPhases点开LinkBinaryWithLibraries将CoreLocation和MapKit两个库加入到项目中,前者是ios的位置服务库,后者是操作MKMapView的库2、新建UIViewController控件布局和设置好关系属性。导入lt;CoreLocation/CoreLocation.hgt;和lt;MapKit/MapKit.hgt;还要让控制器类实现MKMapViewDelegate协议[objc]viewplaincopyprint?#importlt;UIKit/UIKit.hgt;#importlt;MapKit/MapKit.hgt;#importlt;CoreLocation/CoreLocation.hgt;@interfaceMainViewController:UIViewControllerlt;MKMapViewDelegate,UITextFieldDelegategt;//经度@property(weak,nonatomic)IBOutletUITextField*longitudeText;//纬度@property(weak,nonatomic)IBOutletUITextField*latitudeText;//地图@property(weak,nonatomic)IBOutletMKMapView*mapView;//自己经度@property(weak,nonatomic)IBOutletUILabel*longitudeLabel;//自己纬度@property(weak,nonatomic)IBOutletUILabel*latitudeLabel;//放置标注Button-(IBAction)annotationAction:(id)sender;@end3、MKMapView可以通过setShowsUserLocation:YES这个方法来获取自己的位置,并且当地图更新自己的位置后会调用-(void)mapView:(MKMapView*)mapViewdidUpdateUserLocation:(MKUserLocation*)userLocation的一个协议的委托方法,我要在这个方法里面试实现当地图位置更新后/获取自己位置后对地图进行放大。首先在viewDidLoad方法里对让地图调用setShowsUserLocation方法来实现地图的定位,并且设置MapView的委托类。[objc]viewplaincopyprint?-(void)viewDidLoad{//设置MapView的委托为自己[self.mapViewsetDelegate:self];//标注自身位置[self.mapViewsetShowsUserLocation:YES];[superviewDidLoad];}然后实现-(void)mapView:(MKMapView*)mapViewdidUpdateUserLocation:(MKUserLocation*)userLocation方法:[objc]viewplaincopyprint?//MapView委托方法,当定位自身时调用-(void)mapView:(MKMapView*)mapViewdidUpdateUserLocation:(MKUserLocation*)userLocation{CLLocationCoordinate2Dloc=[userLocationcoordinate];//放大地图到自身的经纬度位置。MKCoordinateRegionregion=MKCoordinateRegionMakeWithDistance(loc,250,250);[self.mapViewsetRegion:regionanimated:YES];}CLLocationCoordinate2D是一个结构体记录经纬度,通过地图的获取的location来给其赋值。运行一下程序地图载入的同时获得自身的位置,并且会自动放大到你所在的位置。调试位置:模拟器在运行的时候,可以自定义的设置其自身所在的位置4、获取自身的经纬度显示在两个label上,还是在-(void)mapView:(MKMapView*)mapViewdidUpdateUserLocation:(MKUserLocation*)userLocation方法里面实现,通过MKUserLocation这个类里面有经度和纬度的属性,直接拿出来显示在label上
温馨提示:答案为网友推荐,仅供参考