Действие маркера Google Maps

Я помещаю маркеры в mapView. Маркеры показывают объекты из массива NSArray, заполненного из JSON. Теперь, если пользователь нажимает на маркер, открывается информационное окно, в котором отображается текст из двух полей (ключей) массива. Мне нужно поместить кнопку в информационные окна. Если пользователь нажимает на кнопку, должен быть открыт подробный viewController, содержащий дополнительную информацию о выбранном объекте.

Это код, который помещает маркеры в mapView:

for ( int i=0;i<[categorias count];i++){


            GMSMarker *marker = [[GMSMarker alloc] init];

            double latitud = [[[categorias objectAtIndex:i] objectForKey:@"latitudEmpresa"] doubleValue];

            double longitud = [[[categorias objectAtIndex:i] objectForKey:@"longitudEmpresa"]doubleValue];

            marker.position = CLLocationCoordinate2DMake(latitud, longitud);

            NSString *nombre = [[categorias objectAtIndex:i] objectForKey:@"nombreEmpresa"];
            marker.title = nombre;

            NSString *direccion = [[categorias objectAtIndex:i] objectForKey:@"direccionEmpresa"];
            marker.snippet = direccion;

            marker.map = mapView_;

        }

person mvasco    schedule 27.02.2014    source источник


Ответы (3)


Согласно документации SDK карты Google, они добавляют визуализированное изображение в представление карты, когда пользователь нажимает на маркер. Таким образом, обычно невозможно добавить кнопку для добавления uiview. Но это вызовет событие под названием «didTapWindowOfMarker».

Дополнительную информацию можно найти здесь.

person Hasintha Janka    schedule 27.02.2014
comment
Спасибо, я добавил следующий код, но он никогда не вызывается: - (void) mapView: (GMSMapView *) mapView didTapInfoWindowOfMarker: (GMSMarker *) marker {NSLog (@MARKER .....% @, marker); } - person mvasco; 27.02.2014
comment
Он вызывается, когда вы нажимаете в режиме аннотации. Вы пробовали это. Не забудьте установить делегатов. stackoverflow.com/questions/15125158/ - person Hasintha Janka; 27.02.2014

Принятый ответ правильный, я просто хотел добавить эквивалентное решение в Swift

 func mapView(_ mapView: GMSMapView, didTapInfoWindowOf marker: GMSMarker)
 {
        // An Info window is rendered as an image, it will not respond to actions.
        print("Info Window Clicked On")
 }
person Fiach Reid    schedule 20.04.2018

Swift 4+

Принять GMSMapViewDelegate и использовать этот протокол

    func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
           print("marker tapped:", marker)
           return true
    }
person dbrownjave    schedule 20.09.2019