Как я могу добавить маркеры с пользовательскими изображениями в Mapbox iOS?

Я следую этому руководству: https://www.mapbox.com/mapbox-ios-sdk/examples/marker-custom-image/ и у меня есть веб-API, из которого я получаю latitude / longitude / name / imageURL.

Вы можете увидеть мой код здесь: http://pastebin.com/eGtYSXR8

В строке 107 я хотел бы пройти цикл по ответу и создать маркеры, в то же время назначив собственное изображение для маркера, но я не уверен, как я могу это сделать. Я новичок в Obj-C, поэтому не понимаю, где вызывается эта строка или какое имя функции вообще:

- (RMMapLayer *)mapView:(RMMapView *)mapView layerForAnnotation:(RMAnnotation *)annotation

Может кто-то указать мне верное направление? Я понимаю, как маркеры создаются в MapBox, но кажется, что изображение создается в другой функции без возможности передачи переменной.


person user3545987    schedule 25.04.2014    source источник
comment
Я посмотрел ваш код. RMMapView уже имеет метод -mapView:didUpdateUserLocation: в своем делегате для уведомления об изменениях местоположения. Установите для свойства showsUserLocation RMMapView значение YES   -  person Azat    schedule 27.04.2014


Ответы (2)


Вам также следует ознакомиться с шаблоном делегата в Какао, и вы можете использовать -[RMAnnotation userInfo] для передачи произвольной информации с вашей аннотацией, которая может использоваться в обратном вызове делегата.

person incanus    schedule 28.04.2014

Сначала вам нужно создать RMAnnotation и добавить эту аннотацию на карту.

_userLocation = [RMAnnotation annotationWithMapView:_mapView
                                            coordinate:CLLocationCoordinate2DMake(0.011774,0.002308)
                                             andTitle:nil];
[_mapView addAnnotation:_userLocation];

Второй

- (RMMapLayer *)mapView:(RMMapView *)mapView layerForAnnotation:(RMAnnotation *)annotation
{
    marker = [[RMMarker alloc] initWithUIImage:[UIImage imageNamed:@"userPin"]];
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 80, 80)];
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    marker.leftCalloutAccessoryView = imageView;
    return marker;
}
person Iraklii    schedule 27.04.2014