2016-04-08 4 views
-1

У меня есть широта и долгота, и другую информацию, которую я получаю от API, но я хочу, чтобы динамически показать markerinfowindow с дисплеем некоторую информацию, как имя числаmarkerinfowindow для каждой широты долготы Google Map КСН

if ([response count]>0) 
    { 
     NSArray *array = [response valueForKey:@"response"]; 

     for (int i=0; i<[array count]; i++) 
     { 
      [arrayLat addObject:[[[response valueForKey:@"response"] objectAtIndex:i] valueForKey:@"lat"]]; 
      [arrLong addObject:[[[response valueForKey:@"response"] objectAtIndex:i] valueForKey:@"longi"]]; 
      position = CLLocationCoordinate2DMake([[arrayLat objectAtIndex:i]floatValue],[[arrLong objectAtIndex:i]floatValue]); 
      GMSMarker *marker = [GMSMarker markerWithPosition:position]; 
      //marker.title = [titlearr objectAtIndex:i]; 
      // marker.snippet = @"Subtitle"; 
      marker.flat=YES; 
      marker.map = mapView; 
      mapView.delegate = self; 
      //marker.title=[[[response valueForKey:@"response"] objectAtIndex:i] valueForKey:@"firstname"]; 
      marker.icon = [GMSMarker markerImageWithColor:[UIColor redColor]]; 
      mapView.delegate = self; 
     } 
    } 

У меня есть массив числа, имя, лат и долго inshort вся информация здесь и markerinfowindow Я использую этот метод делегата и теперь я добавить статический вид, но я хочу показать динамически markerinfowindow как на массив

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker 
{ 
    UIView *myview=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 170, 80)]; 
    myview.backgroundColor=[UIColor whiteColor]; 

    UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(10,0, 150, 28)]; 
    [lbl setFont:[UIFont fontWithName:@"Helvetica" size:13.0]]; 
    [email protected]"3.Gregor cleasgance"; 
    lbl.font = [UIFont boldSystemFontOfSize:13.0f]; 
    lbl.textColor=[UIColor blackColor]; 
    [myview addSubview:lbl]; 


    UILabel *lbl2=[[UILabel alloc]initWithFrame:CGRectMake(10,24, 100, 20)]; 
    [lbl2 setFont:[UIFont fontWithName:@"Helvetica" size:13.0]]; 
    [email protected]"Monday 07/02"; 
    lbl2.textColor=[UIColor darkGrayColor]; 
    [myview addSubview:lbl2]; 

    UILabel *lbl3=[[UILabel alloc]initWithFrame:CGRectMake(120,24, 100, 20)]; 
    [lbl3 setFont:[UIFont fontWithName:@"Helvetica" size:13.0]]; 
    [email protected]"14:00h"; 
    lbl3.textColor=[UIColor darkGrayColor]; 
    [myview addSubview:lbl3]; 

    UILabel *lbl4=[[UILabel alloc]initWithFrame:CGRectMake(0,0, 7, 80)]; 
    lbl4.backgroundColor=[UIColor colorWithRed:255.0/255.0 green:192.0/255.0 blue:1.0/255.0 alpha:1.0]; 
    [myview addSubview:lbl4]; 
    return myview; 

} 

ответ

2

Вы можете использовать свойство USERDATA из GMSMarker

пример: у вас есть данные, такие как

json = [{"id":1,"name":"demo", "city":"BOTAD"},{"id":2,"name":"demo2", "city":"SURAT"}] 

И если вы хотите, чтобы показать данные BOTAD затем задать USERDATA как

GMSMarker *marker = [[GMSMarker alloc] init]; 
marker.userData = [json objectAtIndex:0]; 

после этого вы может получить это по методу делегата, например

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker 
{ 
    NSDictionary *data = marker.userData; 

    return mapView; 
} 

сейчас очень легко t o получить данные, такие как город и имя, из словаря, и вы можете установить текст на своем ярлыке.

+0

Спасибо bhai :) –