2014-06-30 4 views

Antwort

31

Sie müssen eine Ansicht erstellen, in der Sie ein imageView (mit Ihrem Markerbild) und Label (mit Ihrem Text) erstellen und einen Screenshot dieser Ansicht erstellen und als Symbol für Ihren GMSMarker festlegen müssen. Etwas wie folgt aus:

- (void)foo 
{ 
    GMSMarker *marker = [GMSMarker new]; 

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,60,60)]; 
    UIImageView *pinImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myPin"]]; 
    UILabel *label = [UILabel new]; 
    label.text = @"1"; 
    //label.font = ...; 
    [label sizeToFit]; 

    [view addSubview:pinImageView]; 
    [view addSubview:label]; 
    //i.e. customize view to get what you need  


    UIImage *markerIcon = [self imageFromView:view]; 
    marker.icon = markerIcon;   
    marker.map = self.mapView;  
} 

- (UIImage *)imageFromView:(UIView *) view 
{ 
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { 
     UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, [[UIScreen mainScreen] scale]); 
    } else { 
     UIGraphicsBeginImageContext(view.frame.size); 
    } 
    [view.layer renderInContext: UIGraphicsGetCurrentContext()]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 
} 
+0

Hi ich habe die gleiche Prozedur verfolgt, aber das Problem ist, dass mein Bild nicht angezeigt wird. – Diksha

10

enter image description here

Wenn Sie so etwas wie dies anzuzeigen, und dann die folgenden Schritte aus. Es ist sehr einfach, Sie können diese Methode verwenden.

-(UIImage *)createImage:(NSUInteger)count{ //count is the integer that has to be shown on the marker 


UIColor *color = [UIColor redColor]; // select needed color 
NSString *string = [NSString stringWithFormat:@"%lu",(unsigned long)count]; // the string to colorize 
NSDictionary *attrs = @{ NSForegroundColorAttributeName : color }; 
NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:string attributes:attrs]; // add Font according to your need 

UIImage *image = [UIImage imageNamed:@"ic_marker_orange"]; // The image on which text has to be added 
UIGraphicsBeginImageContext(image.size); 
[image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)]; 

CGRect rect = CGRectMake(20,5, image.size.width, image.size.height);// change the frame of your text from here 
[[UIColor whiteColor] set]; 
[attrStr drawInRect:rect]; 
UIImage *markerImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

return markerImage;} 

und wenn Sie Marker auf der Karte setzen dann setzen gerade

GMSMarker *marker = [[GMSMarker alloc] init]; 
    marker.icon = [self createImage:[model.strFriendCount integerValue]]; // pass any integer to the method. 
1

Hier ist die schnelle Version von Kunal's answer:

func createImage(_ count: Int) -> UIImage { 
    //count is the integer that has to be shown on the marker 
    let color = UIColor.red 
    // select needed color 
    let string = "\(UInt(count))" 
    // the string to colorize 
    let attrs = [NSForegroundColorAttributeName: color] 
    let attrStr = NSAttributedString(string: string, attributes: attrs) 
    // add Font according to your need 
    let image = UIImage(named: "ic_marker_orange")! 
    // The image on which text has to be added 
    UIGraphicsBeginImageContext(image.size) 
    image.draw(in: CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(image.size.width), height: CGFloat(image.size.height))) 
    let rect = CGRect(x: CGFloat(20), y: CGFloat(5), width: CGFloat(image.size.width), height: CGFloat(image.size.height)) 

    attrStr.draw(in: rect) 

    let markerImage = UIGraphicsGetImageFromCurrentImageContext()! 
    UIGraphicsEndImageContext() 
    return markerImage 
} 

Hope this jemand anderes hilft.

+0

Hatte einige Probleme, wenn Marker ein Haufen sind, aber nicht zu viele (z. B. 100), wo Speicher ein Problem ist: https://StackOverflow.com/questions/43910085/googlemaps-sdk-for-ios-Swift-3-when -hiding-a-marker-und-dann-hinzufügen-the-map-v – Efren

Verwandte Themen