当';我的位置';点击按钮(适用于iOS的谷歌地图SDK)
当“myLocation”按钮点击时,我想做一些事情。 到目前为止,我已经看到了当';我的位置';点击按钮(适用于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
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
}