我希望在“myLocation'按钮敲击。
到目前为止,我已经UIButton
本身:
UIButton *btnMyLoc = (UIButton*)[self.googleMapView subviews].lastObject;
但这还不够。 有什么想法吗?
答案 0 :(得分:18)
在1.9.2版中,有一个委托方法就是这样做的:
(BOOL) didTapMyLocationButtonForMapView: (GMSMapView *) mapView [optional]
答案 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
}