点击折线没有任何作用 - 谷歌地图IOS SDK



>阅读过类似的帖子并尝试了他们的解决方案,但没有任何效果。通过XCode 6.x在IOS模拟器上运行超级简单的Google Maps SDK 1.9.x示例,当我点击(好吧,真的在模拟器中点击,这有什么不同吗?(没有记录任何内容,因为代码会让我相信它会,所以看起来确实TapOverlay永远不会被调用。

#import "ViewController.h"
#import <GoogleMaps/GoogleMaps.h>
@interface ViewController ()
@end
@implementation ViewController {
    GMSMapView *mapView_;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // Create a GMSCameraPosition that tells the map to display the
    // coordinate -33.86,151.20 at zoom level 6.
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:43.5157
                                                            longitude:-114.2933
                                                                 zoom:14];
    mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
    mapView_.myLocationEnabled = YES;
    mapView_.settings.compassButton = YES;
    mapView_.settings.myLocationButton = YES;

    GMSMutablePath *path2 = [GMSMutablePath path];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.50618099,-114.34367)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.50624301,-114.343572)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.50635399,-114.343333)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.50644602,-114.34312)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.50655801,-114.342884)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.50667996,-114.342642)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.506801,-114.342368)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.50693896,-114.342054)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.50707299,-114.341756)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.50719796,-114.341476)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.50731196,-114.341215)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.507419,-114.340978)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.50751396,-114.340759)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.507607,-114.340546)];
    [path2 addCoordinate:CLLocationCoordinate2DMake(43.507736,-114.340248)];
    GMSPolyline *rectangle2 = [GMSPolyline polylineWithPath:path2];
    rectangle2.spans = @[[GMSStyleSpan spanWithColor:[UIColor redColor]]];
    rectangle2.tappable = true;
    rectangle2.strokeWidth = 10.f;
    rectangle2.map = mapView_;
    NSLog(@"The code runs through here!");
    self.view = mapView_;
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (void)mapView:(GMSMapView *)mapView didTapOverlay:(GMSOverlay *)overlay
{
    NSLog(@"in didTapOverlay");
}
@end

任何想法都值得赞赏。

--低音

首先,如果您可以将相机启动到以下几点,则会更容易:

 GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:43.5157
                                                            longitude:-114.34367
                                                                 zoom:14];

因此,您可以在相机内轻松看到折线。

然后在ViewController.h头文件中,将接口更改为以下内容:

@interface ViewController : UIViewController<GMSMapViewDelegate>

因此,您的视图控制器将是 GMSMapViewDelegate。

最后,在您的self.view = mapView_;下方添加以下行:

mapView_.delegate = self;

此行将把你的视图控制器(即 GMSMapViewDelegate(分配给mapView_的 delgate,以便mapView_的委托将是 GMSMapViewDelegate,并且 didTapOverlay 方法将被调用。

最新更新