在iOS上使用HTML自定义Mapbox标注

时间:2015-06-08 11:03:22

标签: ios uiwebview mapbox callout

我正在尝试在iOS上使用MapBox实现自定义标注。当用户按下标记时,我希望标注显示UIWebView而不是左右附件视图,标题仅显示文本。

我搜索了SDK文档,找不到访问注释标题视图的简单方法,因此我可以将其设置为UIWebView

我开始尝试访问注释图层以查看是否可以进行更改,例如:

RMAnnotation *annotation = [[RMAnnotation alloc] initWithMapView:mapView coordinate:CLLocationCoordinate2DMake(56.0,-4.0) andTitle:@"test"];
annotation.userInfo = @"test";

RMMapLayer *layer = annotation.layer;
layer.backgroundColor = [UIColor blackColor].CGColor;

但是,当我按下标记时,注释气泡仍为白色。

我搜索了SDK以尝试理解RMAnnotationRMMarker类之间的关系以及它们如何相互作用,但认为我的理解是有缺陷的,因此我无处可去。

如果有人能帮助我指出正确的方向,那将是值得赞赏的!

1 个答案:

答案 0 :(得分:0)

好的,我找到了一种方法来完成这项工作。这有点像'黑客',但它对我的目的非常有效,所以我想我会分享。如果你有更好的想法请评论,并告诉我这是不是一个很好的方法。

我检查了SDK源代码,RMMapViewSMCalloutView对象传递给标题,副标题和左/右附件视图。当我检查SMCalloutView代码时,可以通过将UIView传递给contentView来提供自定义标注,但RMMapView不提供传递此功能。我的修复是合成SMCallout_currentCallout),以便我可以从ViewController访问contentView并将contentView设置为UIWebView。我选择在名为RMMapViewDelegate的{​​{1}}中创建一个新的委托方法,这样我就可以在将标注绘制到屏幕之前交换我的aboutToDisplayAnnotation,但我想这是一个更好的方法可能是在UIWebView中重写selectAnnotation方法。