Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当';我的位置';点击按钮(适用于iOS的谷歌地图SDK)_Ios_Google Maps Sdk Ios - Fatal编程技术网

当';我的位置';点击按钮(适用于iOS的谷歌地图SDK)

当';我的位置';点击按钮(适用于iOS的谷歌地图SDK),ios,google-maps-sdk-ios,Ios,Google Maps Sdk Ios,当“myLocation”按钮点击时,我想做一些事情。 到目前为止,我已经看到了ui按钮本身: UIButton *btnMyLoc = (UIButton*)[self.googleMapView subviews].lastObject; 但这还不够。 有什么想法吗?目前,Google Maps IOS sdk中没有直接的方法可以知道用户何时点击MyLocation按钮。一种可能的解决方法是使用以下方法 - (void) mapView: (GMSMapView *) mapView i

当“myLocation”按钮点击时,我想做一些事情。 到目前为止,我已经看到了
ui按钮本身:

UIButton *btnMyLoc = (UIButton*)[self.googleMapView subviews].lastObject;
但这还不够。
有什么想法吗?

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

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

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

在1.9.2版中,有一种委托方法可以完全执行以下操作:

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

对于“执行任何其他操作”,您还可以获取“位置”按钮的参考信息

// 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];
            }
        }
    }

委托方法可用

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

}

为了确保这一点,我们需要添加
作为类的委托。
  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
        }