Toccando il cerchio blu pulsante che rappresenta la posizione utente viene visualizzato un richiamo "Posizione corrente". C'è un modo per sopprimerlo?Come sopprimere il callout "Posizione corrente" nella vista mappa
risposta
C'è una proprietà sulla vista annotazione si può cambiare, una volta che la posizione dell'utente è stata aggiornata:
È possibile impostare il title
a vuoto per sopprimere la didascalia:
mapView.userLocation.title = @"";
Edit:
Un modo più affidabile potrebbe essere a vuoto il titolo nel metodo didUpdateUserLocation
delegato:
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
userLocation.title = @"";
}
o in viewForAnnotation
:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>) annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
{
((MKUserLocation *)annotation).title = @"";
return nil;
}
...
}
L'impostazione del titolo nei metodi dei delegati consente di accertarsi di disporre di un'istanza di posizione utente reale con cui lavorare.
Grazie! Sapevo che potevo cambiare il titolo e il sottotitolo, ma non sapevo che impostare il titolo su una stringa vuota lo avrebbe soppresso. – charudatta
La risposta di @jowie è migliore. Usa invece quel metodo. – Anna
@Anna è stato giocherellando ma non ha avuto successo - qualsiasi idea su come sopprimere completamente la bolla di callout predefinita (come sopra, e sì, @jowie risponde probabilmente meglio) senza bloccare 'mapView: didSelectedAnnotationView:' per essere chiamato? –
mi hanno due modi per aiutare a:
Sopprimere nella mapViewDidFinishLoadingMap
func mapViewDidFinishLoadingMap(_ mapView: MKMapView) { mapView.showsUserLocation = true //suppress the title mapView.userLocation.title = "My Location" //suppress other params
}
sopprimere nel didUpdate
func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) { //suppress the title mapView.userLocation.title = "My Location" //suppress other params }
Swift 4
// MARK: - MKMapViewDelegate
func mapViewDidFinishLoadingMap(_ mapView: MKMapView) {
if let userLocationView = mapView.view(for: mapView.userLocation) {
userLocationView.canShowCallout = false
}
}
A volte la posizione non può essere determinata e MKUserLocation diventa grigio. Callout è ancora visualizzato in quel caso. Questa risposta non è corretta. – Andy
fare questo da solo non funziona per me su iOS 10. funziona in 'viewForAnnotation' funziona. –