• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

Personalizzare i callout di MapKit con SMCalloutView

By Francesco Novelli | on 22 Gennaio 2016 | 0 Comment
Risorse utili Tips & Tricks

Nello sviluppo di applicazioni iOS sempre più spesso ci si trova a dover inserire all’interno delle proprie app mappe geografiche utili, ad esempio, per mostrare eventuali punti d’interesse all’interno della propria app. In genere, per far ciò, si tende ad utilizzare MapKit, il framework Apple che integra tutte le funzionalità necessarie alla loro implementazione, che offre tutto ciò che occorre a garantire un’ottima esperienza d’uso, coma la navigazione tramite gesture per la gestione di pan e zoom e via dicendo.

Tra le varie funzioni offerte c’è la possibilità di inserire dei POI (definiti come MKAnnotationPin) che alla pressione mostrano un callout. Le API, però, sono piuttosto restrittive sull’uso di questi oggetti e non permettono la personalizzazione se non in qualche piccolo dettaglio, come gli accessori alla destra e alla sinistra del testo.

In molti casi, però, è necessario personalizzare il callout senza però snaturare del tutto la sua funzione. In questi casi può essere utile la classe SMCalloutView che permette di replicare un perfetto callout Apple ma con un contenuto deciso da noi.

Per utilizzarlo sarà sufficiente scaricare dalla repo ufficiale su github i file SMCalloutView.m e SMCalloutView.h ed inserirli nel nostro progetto. A questo punto si deve istanziare un oggetto SMCalloutView con il metodo +platformCalloutView. Fatto questo si dovrà implementare il metodo del delegate di MKMapView – mapView:didSelectAnnotationView: per mostrare questo callout invece di quello standard Apple:

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)annotationView {
// Settaggi di base per il callout
self.calloutView.title = annotationView.annotation.title;
self.calloutView.subtitle = annotationView.annotation.subtitle;
// Ereditare l'offeset da MKAnnotationView
self.calloutView.calloutOffset = annotationView.calloutOffset;
// E infine mostrare il callout
[self.calloutView presentCalloutFromRect:annotationView.bounds inView:annotationView constrainedToView:self.view animated:YES];
}

e ricordarsi di nascondere al momento giusto il callout:

- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view {
[self.calloutView dismissCalloutAnimated:YES];
}

Questo controllo a differenza di quello ufficiale Apple permette un’ampia personalizzazione consentendo di impostare il contenuto della view con un oggetto UIView qualsiasi semplicemente settando la proprietà contentView.

Nota: nel caso in cui si volesse utilizzare alcune gesture o il semplice tap sull’oggetto, sarà necessario implementare una classe custom di MKMapKit che effettui il forward delle gesture e dei tocchi. Trovate un semplice esempio nell’ultima parte di questa classe fornita nel progetto di esempio.

Share this story:
  • tweet

Tags: mapkitmapview iOSMateriale OpenSourcepersonalizzare callout iOSpersonalizzare info windows iOS

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • T#038 – Utilizzo del MapKit (parte 2): Annotation view calcolo della distanza e reverse geocoding

    5 Maggio 2010 - 48 Comments
  • T#005 – Usare le mappe di google

    7 Novembre 2009 - 22 Comments

Author Description

No Responses to “Personalizzare i callout di MapKit con SMCalloutView”

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO