Запуск при нажатии кнопки «myLocation» (Google Maps SDK для iOS)

Я хочу сделать кое-что, когда нажата кнопка «Мое местоположение». Пока что у меня есть сам UIButton:

UIButton *btnMyLoc = (UIButton*)[self.googleMapView subviews].lastObject;

Но этого недостаточно. Любые идеи?


person Idan Moshe    schedule 28.09.2013    source источник


Ответы (4)


В версии 1.9.2 есть метод делегата, который делает именно это:

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

Ссылка на документацию

person Upvote    schedule 06.04.2015

В настоящее время в SDK Google Maps IOS нет прямого метода, позволяющего узнать, когда пользователь нажимает кнопку MyLocation. Возможный обходной путь - использовать метод ниже

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

Это будет вызываться в конце любой анимации камеры или жестов. Когда пользователь нажимает кнопку «Мое местоположение», камера будет анимирована, чтобы расположить видимую область карты таким образом, чтобы текущее местоположение пользователя (если оно обнаружено) находилось в центре. Таким образом, вы можете проверить внутри idleAtCameraPosition, совпадает ли местоположение с текущим местоположением пользователя, которое можно узнать через - (CLLocation*) myLocation [read, assign], и выполнить необходимые функции.

person tony m    schedule 29.09.2013
comment
чтобы убедиться, что это работает, нам нужно добавить <GMSMapViewDelegate> в качестве делегата для нашего класса. - person Khairulnizam Dahari; 11.12.2013

Доступен метод делегирования

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

}
person Devendra Singh    schedule 10.05.2018

Для любых других действий вы также можете получить ссылку на кнопку местоположения.

// 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];
            }
        }
    }
person Linh Nguyen    schedule 18.11.2016