6

当点击“myLocation”按钮时,我想做一些事情。到目前为止,我有它UIButton自己:

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

但这还不够。有任何想法吗?

4

5 回答 5

19

在 1.9.2 版中,有一个委托方法可以做到这一点:

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

链接到文档

于 2015-04-06T16:01:37.220 回答
2

可用的委托方法

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

}
于 2018-05-10T06:00:50.433 回答
1

目前,Google Maps IOS sdk 中没有直接的方法可以知道用户何时点击MyLocation 按钮。一种可能的解决方法是使用以下方法

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

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

于 2013-09-29T03:13:01.777 回答
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];
            }
        }
    }
于 2016-11-18T07:55:31.997 回答
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
        }
于 2020-02-03T11:00:44.840 回答