我想使用自定义视图创建标注 - 例如此
但是我找不到任何解决方法来做这些事情,只有我发现的解决方案是使用以下代码:
- (RMMapLayer *)mapView:(RMMapView *)mapView layerForAnnotation:(RMAnnotation *)annotation
...
marker = [[RMMarker alloc] initWithUIImage:[UIImage imageNamed:@"marker.png"]];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
CalloutViewController* callout = [storyboard instantiateViewControllerWithIdentifier:@"callout"];
[marker setLabel:callout.view];
}
但结果不是我想要的,因为当我设置标记的label属性时,视图会显示而不会点击标记。
知道如何解决这个问题吗?或者可能还有其他方法可以实现这一目标?
编辑:
我也在github找到了这篇文章,但我无法弄清楚如何实现它。
答案 0 :(得分:2)
它告诉你,点击RMMapView类将处理为你显示一个标注,因为标记的图层上设置了canShowCallout == YES
和title != nil
如果您的标记符合此标准,则会获得与MapKit相同的标注:)
设置contentView或left-或right- CalloutView变量来修改该标注视图
- (RMMapLayer *)mapView:(RMMapView *)mapView layerForAnnotation:(RMAnnotation *)annotation
...
marker = [[RMMarker alloc] initWithUIImage:[UIImage imageNamed:@"marker.png"]];
[marker setCanShowCallout:YES];
[marker setTitle"Test"];
//Following only works with iNimas version
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
CalloutViewController* callout = [storyboard instantiateViewControllerWithIdentifier:@"callout"];
[marker setContentView:callout.view];
return marker ;
}
答案 1 :(得分:1)
这超出了SDK的范围,因为它是在SMCalloutView
依赖项目中完成的。由于两者都是开源的,因此您可以添加此行为,但目前无法实现。
(我写了有问题的SDK)。