如何使用iOS中的Google地图API在mapView上获取触摸位置的纬度和经度

S R*_*yak 1 google-maps-api-3 ios

我过去2天遇到了问题.我正在使用Google Map API处理Google地图应用.我得到用户的当前位置并放下一个引脚.但我的要求是当用户点击地图的任何位置时我需要触摸位置纬度和经度值.

我怎么才能得到它.请不要说下面的代码.

 CGPoint touchPoint = [gestureRecognizer locationInView:mapView_];
 coordinate = [mapView_ convertPoint:touchPoint toCoordinateFromView:mapView_];
Run Code Online (Sandbox Code Playgroud)

此代码适用于MKMapView,不适用于Google地图API.

另一个问题是我也无法触摸mapview.我在下面分享我的代码.请有人帮助我.

这是我的.h文件

#import <UIKit/UIKit.h>
#import <GoogleMaps/GoogleMaps.h>
#import <MapKit/MapKit.h>

@interface ViewController : UIViewController <MKMapViewDelegate>
{
    CLLocationCoordinate2D coordinate;
}
@property (nonatomic, retain) CLLocationManager *locationManager;

@end
Run Code Online (Sandbox Code Playgroud)

这是我的.m文件

@implementation ViewController
{
   GMSMapView *mapView_;
}

- (void)viewDidLoad
{
  [super viewDidLoad];

  self.locationManager = [[CLLocationManager alloc] init];
  self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
  self.locationManager.distanceFilter = kCLDistanceFilterNone;
  float latitude = self.locationManager.location.coordinate.latitude;
  float longitude = self.locationManager.location.coordinate.longitude;

  NSLog(@"*dLatitude : %f", latitude);
  NSLog(@"*dLongitude : %f",longitude);

  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:latitude longitude:longitude zoom:8];
  mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  mapView_.myLocationEnabled = YES;
  mapView_.settings.myLocationButton = YES;
  self.view = mapView_;

  // Creates a marker in the center of the map.
  GMSMarker *pinview = [[GMSMarker alloc] init];
  pinview.position = CLLocationCoordinate2DMake(latitude, longitude);
  //pinview.icon = [UIImage imageNamed:@"pin"];
  pinview.icon = [GMSMarker markerImageWithColor:[UIColor blueColor]];
  pinview.title = @"Bangalore";
  pinview.snippet = @"IntegraMicro";
  pinview.map = mapView_;

  UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc]initWithTarget:self
                                                                  action:@selector(handleGesture:)];
  tgr.numberOfTapsRequired = 1;
  [mapView_ addGestureRecognizer:tgr];

}
Run Code Online (Sandbox Code Playgroud)

如何获取触摸位置纬度和经度值以及如何在mapview上添加点击手势.

请帮我.

谢谢 :)

Rub*_*cio 6

如果您只想获取用户触摸的坐标,则不需要TapGesture.您可以使用- (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate;GMSMapView 的委托方法.在代码中实现该功能:

 -(void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate{
     double latitude = coordinate.latitude;
     double longitude = coordinate.longitude;

     //DO SOMETHING HERE WITH THAT INFO
 }
Run Code Online (Sandbox Code Playgroud)

并在viewDidLoad创建Map后添加此内容:

 func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) {
     let lat = coordinate.latitude
     let long = coordinate.longitude

     print("Latitude: \(lat), Longitude: \(long)")
 }
Run Code Online (Sandbox Code Playgroud)

didTapAtCoordinate应该被称为每次地图后,这触动时间.

希望有所帮助!