У меня есть несколько маркеров на карте, и каждый из них представляет путь с другой темой. Я хочу, чтобы пользователь мог видеть каждую из тем перед выбором маркера, поэтому я планировал добавить простую текстовую метку над каждой из них. Похоже, это не встроенная функция в картах Google для iOS. Есть ли способ обойти это?
Как пометить маркеры карты в Google Maps iOS
Ответы (2)
Настройте UILabel
, настройте его, отрендерите в UIImage
и установите в качестве значка маркера.
//setup label
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 20)];
label.text = @"test";
label.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.5];
//grab it
UIGraphicsBeginImageContextWithOptions(label.bounds.size, NO, [[UIScreen mainScreen] scale]);
[label.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * icon = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//prepare options
GMSMarkerOptions *options = [GMSMarkerOptions options];
options.position = CLLocationCoordinate2DMake(latitude, longitude);
options.title = [NSString stringWithFormat:@"#%d", count_];
options.icon = icon;
person
Daij-Djan
schedule
04.04.2013
если вам нужна метка и булавка, сделайте их одним изображением, вы можете захватить любой вид, который вам нравится
- person Daij-Djan; 04.04.2013
Вау, спасибо за полный ответ, попробую прямо сейчас. Я думал об этом, но я не знал, что renderInContext был вариантом
- person CSStudent; 05.04.2013
Только что попробовал, работает отлично, хотя я добавил [label sizeToFit]; сразу после строки, где вы устанавливаете текст для проверки
- person CSStudent; 05.04.2013
Это здорово! Спасибо. Плохо только то, что с большим количеством маркеров (например, 300 маркеров) он тормозит.
- person Jorge Wander Santana Ureña; 11.10.2016
ну.. они действительно разные? и на карте одновременно? Я использую его в сочетании с кешем и могу обрабатывать 1000 маркеров.
- person Daij-Djan; 11.10.2016
Я новичок в быстрой работе, но мне удалось преобразовать ответ Дайджа-Джана:
let label = UILabel()
label.frame = CGRect(x:0, y:0, width: 50, height: 20)
label.text = "test"
label.backgroundColor = UIColor.redColor().colorWithAlphaComponent(0.5)
label.textColor = UIColor.whiteColor()
label.adjustsFontSizeToFitWidth = true
UIGraphicsBeginImageContextWithOptions(label.frame.size, false, UIScreen.mainScreen().scale)
if let currentContext = UIGraphicsGetCurrentContext()
{
label.layer.renderInContext(currentContext)
let imageMarker = UIImage()
imageMarker = UIGraphicsGetImageFromCurrentImageContext()
let marker = GMSMarker(position: CLLocationCoordinate2DMake(lat, long))
marker.icon = imageMarker
marker.map = mapView
}
UIGraphicsEndImageContext()
person
jordan314
schedule
04.03.2016