Sto tentando di aggiungere un effetto sfocato su una sovrapposizione su una mappa. In realtà ho bisogno dell'effetto sfocatura su un cerchio sulla mappa, il metodo che uso per ottenere non è così importante.Aggiungi cerchio con effetto sfocatura su un MKMapView
Ho una classe che si estende da MKCircleRenderer
e volevo aggiungere un effetto sfocatura sulla mappa che copre.
Stavo provando a utilizzare il metodo -fillPath:inContext:
, ma la mia ignoranza su Core Graphics e Core Image mi ha portato in nessun posto e sono davvero molto perso su questo problema.
Il mio tentativo era utilizzare il CIFilter
e per quello ho bisogno di un CIImage
che ho provato a creare dal contesto. Ma non ho trovato alcun modo per creare un CGBitmapContext
, CGImage
né alcuna altra classe dal contesto. Qualsiasi metodo che ho provato è risultato su NULL senza ulteriori dettagli sul perché. Non riesco a ricordare tutto ciò che ho provato, quindi mi dispiace non aver puntato nulla a riguardo.
La mia classe attualmente implementa uno metodi che non fanno in realtà molto:
- (instancetype)initWithOverlay:(id<MKOverlay>)overlay {
if (self = [super initWithOverlay:overlay]) {
self.strokeColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1];
self.fillColor = [UIColor colorWithRed:0.4 green:0.2 blue:0.2 alpha:0.1];
self.lineWidth = 1;
}
return self;
}
Un'alternativa potrebbe essere utilizza uno personalizzato MKAnnotation
e aggiungere l'effetto di sfocatura sopra la vista con il UIVisualEffectView
. La parte difficile con questo approccio è aumentare/diminuire le dimensioni durante lo zoom.
Questo dovrebbe funzionare su iOS 8+
Modifica
In questo caso, la mappa dietro l'interno del cerchio dovrebbe essere offuscata
è possibile fornire uno screenshot di che cosa esattamente si vuole raggiungere? Sfocare la mappa ad eccezione di un cerchio specifico? O solo sfocare un cerchio? Perché è dipendente dallo zoom? – luk2302
Sarebbe meglio se mostri uno screenshot di quello che ti serve –
Sfoca il cerchio. Mi piacerebbe avere un'area coperta da un cerchio sfocato. L'area dovrebbe avere un raggio di un quarto di miglio, quindi se qualcuno esegue lo zoom in/out deve cambiare le sue dimensioni. Aggiungerò presto un'immagine. –