如何显示GMS mapView的多个信息窗口?

时间:2016-02-08 09:47:41

标签: ios objective-c google-maps gmsmapview

我想添加多个信息窗口,以便同时显示标记。 如何实现这个?

以下是添加多个标记并添加infoWindow的代码?

    for (int i = 0 ; i < jsonDataDict.count; i ++) {
        NSDictionary *newDict = [jsonDataDict objectAtIndex:i ];

        double latitude = [[newDict valueForKey:@"lat"]doubleValue];
        double longitute = [[newDict valueForKey:@"lng"]doubleValue];

        CLLocationCoordinate2D position = CLLocationCoordinate2DMake(latitude, longitute);
        GMSMarker *marker = [GMSMarker markerWithPosition:position];
        nameOfPlace = [newDict valueForKey:@"name"];
       // distanceOfPlace = [newDict valueForKey:@"distance"];
        marker.icon = [self image:[UIImage imageNamed:@"pinPopoye.png"] scaledToSize:CGSizeMake(75.0f, 60.0f)];
        marker.appearAnimation = kGMSMarkerAnimationPop;
        marker.infoWindowAnchor = CGPointMake(1.1, 0.70);
        marker.map = self.mapView;

      [self.mapView setSelectedMarker:marker];

      //[self mapView:self.mapView markerInfoWindow:marker];


    }
}

     - (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker
       {
    UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 25)];
    customView.backgroundColor = [UIColor colorWithRed:71.0/255.0 green:65.0/255.0 blue:65.0/255.0 alpha:0.8];
    customView.layer.cornerRadius = 5;
    customView.layer.masksToBounds = YES;

    nameLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 60, 10)];
    nameLabel.text = nameOfPlace;
    nameLabel.textColor = [UIColor whiteColor];
    nameLabel.textAlignment = NSTextAlignmentCenter;
    nameLabel.font = [UIFont systemFontOfSize:8.0];
    [customView addSubview:nameLabel];

    distanceLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 12, 60, 10)];
    distanceLabel.text = distanceOfPlace;
    distanceLabel.textColor = [UIColor whiteColor];
    distanceLabel.textAlignment = NSTextAlignmentCenter;
    distanceLabel.font = [UIFont systemFontOfSize:8.0];
    [customView addSubview:distanceLabel];

    return customView;
}

1 个答案:

答案 0 :(得分:0)

您所要做的就是将信息窗口与标记一起渲染为图像,并将该图像设置为图钉图标(marker.icon)。

以下是解决方案: http://adhocmanager.com/posts/ios-google-maps-show-all-info-windows/

相关问题