在iOS上使用HTML定制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类之间的关系以及它们如何相互作用,但认为我的理解是有缺陷的,因此我没有得到任何地方。

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

好了,我想到了一个办法。这是一个小"hack",但它非常适合我的目的,所以我想我将分享。如果你有更好的主意,请评论,并告诉我这是不是一个很好的方法。

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

相关内容

  • 没有找到相关文章

最新更新