如何用相机谷歌地图xcode移动标记(针)

我在我的应用程序中使用谷歌地图API。 我的应用程序中有两个按钮。 第一个按钮在我的地图中添加一个标记(图钉)。 现在我想要第二个按钮将添加的引脚水平移动到页面的中心,并使其移动到页面顶部的25%。 我希望相机(用户正在查看的区域)也可以移动它。 这是我的代码:

@implementation ViewController { double latitudes; double longitudes; CLLocationManager *locationManager; GMSMapView *mapView_; } - (void)viewDidLoad { [super viewDidLoad]; locationManager = [[CLLocationManager alloc] init]; [self GetMyLocation]; UIButton *pinButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; pinButton.frame = CGRectMake(self.view.frame.size.width-80,self.view.frame.size.height-80, 60, 60); [pinButton setTitle:@"Self" forState:UIControlStateNormal]; [pinButton setBackgroundColor:[UIColor whiteColor]]; [pinButton addTarget:self action:@selector(ShowMyLocation:) forControlEvents:UIControlEventTouchUpInside]; UIButton *add = [UIButton buttonWithType:UIButtonTypeRoundedRect]; add.frame = CGRectMake(20,self.view.frame.size.height-80, 60, 60); [add setTitle:@"add" forState:UIControlStateNormal]; [add setBackgroundColor:[UIColor whiteColor]]; [add addTarget:self action:@selector(Move:) forControlEvents:UIControlEventTouchUpInside]; // Create a GMSCameraPosition that tells the map to display the // nokte mohem ine ke baadan ye logitude & latitude default ezafe kon chon shaiad tuie ye sharaiete tokhmi ke hamid esrar dare va ye kasi mariz bood dastresie GPS ro ghat kard GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:latitudes longitude:longitudes zoom:14]; mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView_.myLocationEnabled = YES; [mapView_ setMapType:kGMSTypeNormal]; self.view = mapView_; [mapView_ addSubview:pinButton]; [mapView_ addSubview:add]; } - (IBAction)Move:(id)sender{ //move marker place } - (IBAction)ShowMyLocation:(id)sender{ GMSMarker *marker = [[GMSMarker alloc] init]; marker.position = CLLocationCoordinate2DMake(coor.latitude,coor.longitude); marker.title = @"I'm Here"; marker.snippet = @"Rahnova Co."; marker.appearAnimation = kGMSMarkerAnimationPop; marker.map = mapView_; } - (void) GetMyLocation{ locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBest; [locationManager startUpdatingLocation]; } #pragma mark - CLLocationManagerDelegate - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{ NSLog(@"didFailWithError: %@", error); UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [errorAlert show]; } - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ CLLocation *currentLocation = newLocation; if (currentLocation != nil) { longitudes = currentLocation.coordinate.longitude; latitudes = currentLocation.coordinate.latitude; } GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:latitudes longitude:longitudes zoom:14]; [mapView_ animateToCameraPosition:camera]; } 

提前致谢

试试这个代码: –

.M实现文件的标题上,您必须实现GMSMapViewDelegate

 @interface YourViewController () 

viewDidLoad中 ,您必须将mapView委托设置为self。

 mapView_.delegate=self; 

对于委托方法: –

 -(BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker{ [mapView animateToLocation:marker.position]; return YES; } 

当您点击它时,它将帮助您转到标记位置。