Как установить множественные метки с помощью настраиваемого информационного окна в API карт Google для ios?

У меня есть вопрос. Я установил API карт Google для собственного кода ios.

Я использую API Карт Google версии 1.4.3.

Я прошел кастомный маркер infoWindow удачно в одну отметку.

Но я не могу установить различное содержимое infoWindow для нескольких меток.

Кто-нибудь может проинструктировать меня, как передать другой заголовок и фрагмент методу markerInfoWindow? или как узнать отметку при нажатии?

Я атакую ​​свой код одной меткой и настраиваемой частью markerInfoWindow.

- (void)viewDidLoad
{
    [super viewDidLoad];
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:25.03760471     longitude:121.5412 zoom:14];
    mapView = [GMSMapView mapWithFrame:CGRectMake(0, 0,     _mapBackgroundView.frame.size.width,_mapBackgroundView.frame.size.height) camera:camera];
    mapView.myLocationEnabled = YES;
    mapView.settings.myLocationButton = YES;
    mapView.settings.compassButton = YES;
    mapView.delegate = self;

    [self.mapBackgroundView addSubview:mapView];

    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = CLLocationCoordinate2DMake(25.03760471, 121.5412);
    marker.map = mapView;

    GMSMarker *marker2 = [[GMSMarker alloc] init];
    marker2.position = CLLocationCoordinate2DMake(25.03760461, 121.5432);
    marker2.map = mapView;
}

-(UIView *) mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker
{
    CustomInfoWindow *infoWindow = [[[NSBundle mainBundle]loadNibNamed:@"InfoWindow"   owner:self options:nil] objectAtIndex:0];
    infoWindow.titleLb.text = @"1th marks";
    infoWindow.snippetLb.text= @"1th marks snippet~";
    return infoWindow;
}

большое спасибо ~


person dickfala    schedule 23.10.2013    source источник


Ответы (1)


Вы можете сделать это разными способами ... обычно вам нужно написать собственный класс и установить там какой-то уникальный идентификатор, чтобы правильно идентифицировать маркер позже в делегированном методе ... но вот неприятный способ ...

- (void)viewDidLoad
{
[super viewDidLoad];
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:25.03760471     longitude:121.5412 zoom:14];
    mapView = [GMSMapView mapWithFrame:CGRectMake(0, 0,     _mapBackgroundView.frame.size.width,_mapBackgroundView.frame.size.height) camera:camera];
        mapView.myLocationEnabled = YES;
        mapView.settings.myLocationButton = YES;
        mapView.settings.compassButton = YES;
        mapView.delegate = self;

        [self.mapBackgroundView addSubview:mapView];

        GMSMarker *marker = [[GMSMarker alloc] init];
        marker.position = CLLocationCoordinate2DMake(25.03760471, 121.5412);
        marker.map = mapView;
        marker.title= @"1st marker"; // set some title here

        GMSMarker *marker2 = [[GMSMarker alloc] init];
        marker2.position = CLLocationCoordinate2DMake(25.03760461, 121.5432);
        marker2.title= @"2nd marker";
        marker2.map = mapView;
}


-(UIView *) mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker
{

    CustomInfoWindow *infoWindow = [[[NSBundle mainBundle]loadNibNamed:@"InfoWindow"   owner:self options:nil] objectAtIndex:0];
    infoWindow.titleLb.text = marker.title;  // change the text according to the marker displayed here
    infoWindow.snippetLb.text= @"1th marks snippet~";


    return infoWindow;
}
person arin    schedule 30.10.2013