gpt4 book ai didi

ios - 如何在委托(delegate)函数中处理多个 MKOverlays

转载 作者:行者123 更新时间:2023-11-28 19:17:41 25 4
gpt4 key购买 nike

我想要一个带有两个不同叠加层的 MKMapView。

首先,我有一个“ map 上的图像叠加层”(TileOverlay),其次,我想在 map 上绘制一条路线作为叠加层。

如果我在两个不同的项目中执行此操作(一个带有图像叠加层,另一个带有路由叠加层),一切正常

现在,我想知道如果我合并我的项目,viewForOverlay 委托(delegate)函数应该是什么样子?

对于我的图像(平铺)叠加层,我目前看起来像这样:

- (MKOverlayView *) mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
TileOverlayView *tileView = [[TileOverlayView alloc] initWithOverlay:overlay];
tileView.tileAlpha = 1.0;
return tileView;
}

我的路线 Overlay 看起来像这样:

- (MKOverlayView*)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay 
{
MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
polylineView.lineJoin = kCGLineJoinRound;
polylineView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.4];
return polylineView;
}

现在如果我想“合并”这些(到一个项目中),这个方法应该是什么样子?

 - (MKOverlayView*)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay 
{
//what comes here?
}

最佳答案

您可以通过首先检查传递给您的 mapView:viewForOverlay: 方法的叠加类型来处理这种情况,如下所示:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {

if ([overlay isKindOfClass:[MKPolyline class]]) {

MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
polylineView.lineJoin = kCGLineJoinRound;
polylineView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.4];
return polylineView;

} else {

TileOverlayView *tileView = [[TileOverlayView alloc] initWithOverlay:overlay];
tileView.tileAlpha = 1.0;
return tileView;
}

关于ios - 如何在委托(delegate)函数中处理多个 MKOverlays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11170493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com