点击“myLocation”按钮时触发(适用于iOS的Google Maps SDK)

时间:2013-09-28 11:06:20

标签: ios google-maps-sdk-ios

我希望在“myLocation'按钮敲击。 到目前为止,我已经UIButton本身:

UIButton *btnMyLoc = (UIButton*)[self.googleMapView subviews].lastObject;

但这还不够。 有什么想法吗?

5 个答案:

答案 0 :(得分:18)

在1.9.2版中,有一个委托方法就是这样做的:

(BOOL) didTapMyLocationButtonForMapView: (GMSMapView *) mapView [optional]

Link to documentation

答案 1 :(得分:1)

目前Google Maps IOS sdk中没有直接的方法来了解用户何时点按 MyLocation按钮。可能的解决方法是使用以下方法

- (void) mapView: (GMSMapView *) mapView  idleAtCameraPosition: (GMSCameraPosition *)   position 

这将在任何相机动画或手势结束时调用。当用户点击mylocation按钮时,摄像机将被动画化以定位可见地图区域,使得用户的当前位置(如果被检测到)将位于中心。因此,您可以在 idleAtCameraPosition 内查看该位置是否与用​​户可通过- (CLLocation*) myLocation [read, assign]了解的当前位置相同,并执行您所需的功能。

答案 2 :(得分:0)

对于其他任何事情你也可以参考位置按钮。

// custom target My Location Button
    for (UIView* tmpview in _mapView.subviews[1].subviews[0].subviews) {
        if ([NSStringFromClass([[tmpview class] class]) isEqualToString:@"GMSx_QTMButton"]) {
            if ([tmpview isKindOfClass:[UIButton class]]) {
                myLocationBtn = (UIButton*)tmpview;
                [myLocationBtn addTarget:self action:@selector(clickedOnLocationButton:) forControlEvents:UIControlEventTouchUpInside];
            }
        }
    }

答案 3 :(得分:0)

可用的委托方法

func didTapMyLocationButton(for mapView: GMSMapView) -> Bool{

}

答案 4 :(得分:0)

  func didTapMyLocationButton(for mapView: GMSMapView) -> Bool {


//if want to change the camera position

            if self.latDouble != 0.0 && self.longDouble != 0.0
            {
                let camera: GMSCameraPosition = GMSCameraPosition.camera(withLatitude: self.latDouble, longitude: self.longDouble, zoom: 18.0)
                self.mapView.camera = camera

            }

             self.mapView.isMyLocationEnabled = true
            self.mapView.reloadInputViews()
            return true
        }