Несколько маркер не отображается - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу показать несколько маркеров на карте Google.Есть ответы, основанные на этом.Но маркеры не отображаются на карте.Хотя я получаю значение широты и долготы на основе результата массива.Что мне делать?

Примечание. Я внес некоторые изменения, и код работает отлично.

Мой код:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self performRequestForRestaurantListing];
    geometryDict=[[NSMutableDictionary alloc]init];
    locationDict=[[NSMutableDictionary alloc]init];

    NSLog(@"the value of list is %@", _service);
    NSLog(@"the value of stringradius is %@", _stringRadius);

    /*---location Manager Initialize-------*/
    self.manager=[[CLLocationManager alloc]init];
    self.manager.distanceFilter = 100;
    self.manager.desiredAccuracy = kCLLocationAccuracyBest;
    [self.manager requestAlwaysAuthorization];
    self.manager.delegate=self;
    [self.manager startUpdatingLocation];


    [mapView setDelegate:self];

    latitude=@"22.5726";
    longitude=@"88.3639";



    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:[latitude  doubleValue]
                                                           longitude:[longitude  doubleValue]
                                                                zoom:12];

    [mapView animateToCameraPosition:camera];
   [self coordinateOnMap:latitude andWithLongitude:longitude];
}

-(void)coordinateOnMap:(NSString*)latitude andWithLongitude:(NSString*)longitude
{
    GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] init];
    CLLocationCoordinate2D location;
   for (int i=0;i<[restaurantList count];i++)
    {
         driverMarker = [[GMSMarker alloc] init];
        latitude=[[[[restaurantList objectAtIndex:i]objectForKey:@"geometry"]objectForKey:@"location"] objectForKey:@"lat"];
        longitude=[[[[restaurantList objectAtIndex:i]objectForKey:@"geometry"]objectForKey:@"location"] objectForKey:@"lng"];
        location.latitude = [latitude floatValue];
        location.longitude = [longitude floatValue];
        driverMarker.position = CLLocationCoordinate2DMake(location.latitude, location.longitude);
        driverMarker.map = mapView;    
    }
   driverMarker.icon=[UIImage imageNamed:@"marker"];
    bounds = [bounds includingCoordinate:driverMarker.position];
    driverMarker.title = @"My locations";
    [driverMarker setTappable:NO];
    mapView.myLocationEnabled = YES;

}

1 Ответ

0 голосов
/ 25 апреля 2018

Полагаю, ваш driveMarker освобождается ARC сразу после каждого цикла.Если это действительно ваша проблема, вам нужно убедиться, что эти маркеры «выживают» в цикле, например, с помощью следующего кода:

@implementation MyController
    @property (nonatomic) NSMutableArray *allMarkers;

    - (void)viewDidLoad {
         allMarkers = [[NSMutableArray alloc] init];
         // ...
    }

    -(void)coordinateOnMap:(NSString*)latitude andWithLongitude:(NSString*)longitude {
        //...
        [allMarkers removeAllObjects];
        for (int i=0;i<[restaurantList count];i++) {
            GMSMarker *driverMarker =  [[GMSMarker alloc] init];
            [allMarkers addObject:driveMarker];

            // ...
         }
    }
@end

Это создаст свойство NSArray для хранения всех созданныхмаркеры, просто чтобы держать их в области видимости.

...