Я хочу сделать кое-что, когда нажата кнопка «Мое местоположение». Пока что у меня есть сам UIButton
:
UIButton *btnMyLoc = (UIButton*)[self.googleMapView subviews].lastObject;
Но этого недостаточно. Любые идеи?
Я хочу сделать кое-что, когда нажата кнопка «Мое местоположение». Пока что у меня есть сам UIButton
:
UIButton *btnMyLoc = (UIButton*)[self.googleMapView subviews].lastObject;
Но этого недостаточно. Любые идеи?
В версии 1.9.2 есть метод делегата, который делает именно это:
(BOOL) didTapMyLocationButtonForMapView: (GMSMapView *) mapView [optional]
В настоящее время в SDK Google Maps IOS нет прямого метода, позволяющего узнать, когда пользователь нажимает кнопку MyLocation. Возможный обходной путь - использовать метод ниже
- (void) mapView: (GMSMapView *) mapView idleAtCameraPosition: (GMSCameraPosition *) position
Это будет вызываться в конце любой анимации камеры или жестов. Когда пользователь нажимает кнопку «Мое местоположение», камера будет анимирована, чтобы расположить видимую область карты таким образом, чтобы текущее местоположение пользователя (если оно обнаружено) находилось в центре. Таким образом, вы можете проверить внутри idleAtCameraPosition, совпадает ли местоположение с текущим местоположением пользователя, которое можно узнать через - (CLLocation*) myLocation [read, assign]
, и выполнить необходимые функции.
<GMSMapViewDelegate>
в качестве делегата для нашего класса.
- person Khairulnizam Dahari; 11.12.2013
Доступен метод делегирования
func didTapMyLocationButton(for mapView: GMSMapView) -> Bool{
}
Для любых других действий вы также можете получить ссылку на кнопку местоположения.
// 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];
}
}
}