我想知道是否有可能根据选择maptype更改地图叠加alpha这里是我认为可能有用的代码,但似乎没有。任何人都可以提供一些煽动吗?
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay{
TileOverlayView *view = [[TileOverlayView alloc] initWithOverlay:overlay];
if(mapview.mapType == MKMapTypeHybrid) {
view.tileAlpha = 0.55;
} else if(mapview.mapType == MKMapTypeSatellite) {
view.tileAlpha = 0.0;
} else {
view.tileAlpha = 0.75;
}
return [view autorelease];
}
答案 0 :(得分:0)
此代码工作正常
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
MKCircleView *circleView = [[MKCircleView alloc] initWithCircle:overlay];
CGFloat alpha;
if (mapView.mapType == MKMapTypeStandard) {
alpha = 0.5f;
} else {
alpha = 1.0f;
}
circleView.fillColor = [[UIColor blackColor] colorWithAlphaComponent:alpha];
return circleView;
}
但是在mapView:viewForOverlay中,您可以根据当前地图类型设置alpha。要在地图更改地图类型时更改Alpha,您需要使用KVO观察mapType属性。因此,当地图类型发生变化时,您只需为所有叠加层设置新的Alpha。获取叠加使用的视图
[mapView viewForOverlay:(id<MKOverlay>)overlay];