0

我正在尝试MapBox在 iOS 上使用自定义标注。当用户按下标记时,我希望标注显示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类之间的关系以及它们如何交互,但我认为我的理解存在缺陷,因此我一无所获。

如果有人可以帮助我指出正确的方向,我将不胜感激!

4

1 回答 1

0

好的,我想出了一种方法来完成这项工作。它有点“黑客”,但它对我的目的非常有效,所以我想我会分享。如果您有更好的想法,请发表评论,并告诉我这是否不是一个好方法。

我检查了 SDK 源代码RMMapView并将对象传递SMCalloutView给标题、副标题和左/右附件视图。当我检查SMCalloutView代码时,可以通过传递 a 来提供自定义标注UIViewcontentViewRMMapView不提供传递它。我的修复是合成SMCallout( _currentCallout) 以便我可以contentView从我的 ViewController 访问并将 contentView 设置为UIWebView. 我选择在RMMapViewDelegate调用aboutToDisplayAnnotation中创建一个新的委托方法,它为我提供了在标注被绘制到屏幕之前交换我的机会UIWebView,但我想更好的方法可能是selectAnnotationRMMapView.

于 2015-06-11T18:42:47.587 回答