当点击“myLocation”按钮时,我想做一些事情。到目前为止,我有它UIButton
自己:
UIButton *btnMyLoc = (UIButton*)[self.googleMapView subviews].lastObject;
但这还不够。有任何想法吗?
当点击“myLocation”按钮时,我想做一些事情。到目前为止,我有它UIButton
自己:
UIButton *btnMyLoc = (UIButton*)[self.googleMapView subviews].lastObject;
但这还不够。有任何想法吗?
在 1.9.2 版中,有一个委托方法可以做到这一点:
(BOOL) didTapMyLocationButtonForMapView: (GMSMapView *) mapView [optional]
可用的委托方法
func didTapMyLocationButton(for mapView: GMSMapView) -> Bool{
}
目前,Google Maps IOS sdk 中没有直接的方法可以知道用户何时点击MyLocation 按钮。一种可能的解决方法是使用以下方法
- (void) mapView: (GMSMapView *) mapView idleAtCameraPosition: (GMSCameraPosition *) position
这将在任何相机动画或手势结束时调用。当用户单击 mylocation 按钮时,相机将被动画以定位可见地图区域,以便用户的当前位置(如果检测到)将位于中心。因此,您可以在idleAtCameraPosition内部检查该位置是否与用户的当前位置相同,可以通过该位置了解- (CLLocation*) myLocation [read, assign]
并执行您所需的功能。
对于其他任何事情,您也可以参考位置按钮。
// 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 {
//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
}