In questa presentazione viene fatta una breve panoramica su come utilizzare i servizi di geolocalizzazione e i controlli mappe all'interno di un'applicazione Windows Phone 8.
Presented at the Great American Beer Festival, this show on "Beer & Nuts for Beer Nuts" pairs Left Hand Brewing Company beers with sweet foods.
Presented to the Great Northern Brewers of Alaska in conjunction with the Great Alaska Beer & Barley Wine Festivalm this show about Gluten Free Beer illustrates one of the newest segments of the brewing world today: brewing with alternate grains.
Presented at the Great American Beer Festival, this show on "Beer & Nuts for Beer Nuts" pairs Left Hand Brewing Company beers with sweet foods.
Presented to the Great Northern Brewers of Alaska in conjunction with the Great Alaska Beer & Barley Wine Festivalm this show about Gluten Free Beer illustrates one of the newest segments of the brewing world today: brewing with alternate grains.
Legacy Education Alliance, Inc. is a leading international provider of practical, high-quality, and value-based educational training on the topics of personal finance, entrepreneurship, real estate, and financial markets investing strategies and techniques.
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...Massimiliano Leone
A short presentation for my bachelor thesis, about 5 frameworks for development of geolocalized Android apps:
- Diane: for an awareness searching
- Hermes: a different mvc in android
- Polaris/Kusor: a better solution for location retrieving
- Socrates: a Google Places Api library, in pure Java
- Ulysses: a specific use of Diane, for aware search of places from Google Places - that is: the summa of Diane and Socrates.
Code available on github:
https://github.com/k0smik0/diane
https://github.com/k0smik0/hermes
https://github.com/k0smik0/polaris
https://github.com/k0smik0/kusor
https://github.com/k0smik0/socrates
https://github.com/k0smik0/ulysses
TravelStory is a cross-platform mobile application developed with Xamarin.forms. The application and the related back-end (Microsoft Azure) have been developed for my bachelor thesis.
The application is aimed at tourists who want to share their travel experience. The application is launched and the user can create a new account or just log in. On the home they are asked to create a new trip or if already it's present they continue with the last. It will be the tourist to choose when to save his important points. These points are identified by a GPS position and can be enhanced with photos, videos and notes. These contents are pinpointed and at the end of the trip the entire path can be shared through an external platform. The finished trips can be viewed at any time and can be managed completely.
http://nixmap.com
info@nixmap.com
Nixmap è un software che consente la consultazione e l'esplorazione da parte di turisti e cittadini di tutte le cartografie e le mappe attualmente disponibili su Niscemi, è stato sviluppato gratuitamente dai tecnici della Geofunction Srls e mantenuto grazie a contribuzioni volontarie di privati ed associazioni e sponsorizzazioni di partner commerciali.
Nixmap consente agli utenti di visualizzare strati cartografici di varia natura, dalle mappe urbanistiche a quelle turistiche, dai percorsi naturali a quelli storico-archeologici.
Nixmap fa parte dei progetti di ottimizzazione delle spese per la promozione turistica, di progressiva virtualizzazione dei servizi di guida locale (quali ad esempio le classiche bacheche turistiche), che man mano verranno sostituiti con servizi web on-line all'avanguardia ed al passo coi tempi.
Legacy Education Alliance, Inc. is a leading international provider of practical, high-quality, and value-based educational training on the topics of personal finance, entrepreneurship, real estate, and financial markets investing strategies and techniques.
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...Massimiliano Leone
A short presentation for my bachelor thesis, about 5 frameworks for development of geolocalized Android apps:
- Diane: for an awareness searching
- Hermes: a different mvc in android
- Polaris/Kusor: a better solution for location retrieving
- Socrates: a Google Places Api library, in pure Java
- Ulysses: a specific use of Diane, for aware search of places from Google Places - that is: the summa of Diane and Socrates.
Code available on github:
https://github.com/k0smik0/diane
https://github.com/k0smik0/hermes
https://github.com/k0smik0/polaris
https://github.com/k0smik0/kusor
https://github.com/k0smik0/socrates
https://github.com/k0smik0/ulysses
TravelStory is a cross-platform mobile application developed with Xamarin.forms. The application and the related back-end (Microsoft Azure) have been developed for my bachelor thesis.
The application is aimed at tourists who want to share their travel experience. The application is launched and the user can create a new account or just log in. On the home they are asked to create a new trip or if already it's present they continue with the last. It will be the tourist to choose when to save his important points. These points are identified by a GPS position and can be enhanced with photos, videos and notes. These contents are pinpointed and at the end of the trip the entire path can be shared through an external platform. The finished trips can be viewed at any time and can be managed completely.
http://nixmap.com
info@nixmap.com
Nixmap è un software che consente la consultazione e l'esplorazione da parte di turisti e cittadini di tutte le cartografie e le mappe attualmente disponibili su Niscemi, è stato sviluppato gratuitamente dai tecnici della Geofunction Srls e mantenuto grazie a contribuzioni volontarie di privati ed associazioni e sponsorizzazioni di partner commerciali.
Nixmap consente agli utenti di visualizzare strati cartografici di varia natura, dalle mappe urbanistiche a quelle turistiche, dai percorsi naturali a quelli storico-archeologici.
Nixmap fa parte dei progetti di ottimizzazione delle spese per la promozione turistica, di progressiva virtualizzazione dei servizi di guida locale (quali ad esempio le classiche bacheche turistiche), che man mano verranno sostituiti con servizi web on-line all'avanguardia ed al passo coi tempi.
Un’applicazione mobileserver per la mappatura d’informazioni a supporto delle...TeamDev
"Un’applicazione mobile/server per la mappatura d’informazioni a supporto delle scelte agronomiche" Intervento di Velia Sartoretti al Todi Appy Days 2014
Acadevmy - AngularDay 2018 - Change Detection, Zone.js ed altri mostriFrancesco Sciuti
Un talk dedicato agli aspetti più arcani di Angular tra i quali sono presenti alcuni mostri, che una volta conosciuti non fanno poi così tanta paura. Approfondiamo quindi alcuni aspetti della Change Detection di Angular, proviamo a capire a cosa serve e come funziona Zone.js e se sono presenti in giro altre creature o miti da sfatare!
Nel 2012 avere un'app è una necessità per ogni azienda, figurarsi per una delle ONG più importanti del mondo: Medici Senza Frontiere.
Ottimizzare gli sforzi di budget in una organizzazione come questa è un dovere, così come dare la possibilità a tutti i sostenitori di farlo indipendentemente dalla propria piattaforma di riferimento: iOS o Android ma senza dimenticare le altre.
La parola d'ordine è allora sviluppo Crossplatform: il panorama dei framework per questo è variegato. Uno dei più famosi e potenti è Titanium Appcelerator di cui abbiamo parlato lo scorso anno in MobileD!
In questo talk parleremo meglio di alcuni rudimenti e approcci tipici di Titanium per poi capire come l'integrazione con Drupal è stata realizzata e come aver garantito una sola code base Drupal che alimenti le app (iOS e Android) e il sito mobile per le altre piattaforme.
Gps-Locator(http://gpslocator.altervista.org/) e' un sistema per il monitoraggio della posizione delle coordinate geografiche di un dispositivo cellulare. Il software e' stato creato per verificare la posizione dei dipendenti di un'azienda di trasporti durante l'arco di tempo lavorativo.
L'idea e' nata da un fatto concreto accaduto nell'azienda familiare, dove alcuni dipendenti utilizzavano l'orario di lavoro, approfittando del fatto di essere lasciati in piena autonomia, per scopi personali, facendo risultare l' orario lavorativo piu' lungo di quello che avrebbe dovuto essere.
Per risolvere il problema ho ideato questo sistema nominato GPS-Locator, il quale preleva la posizione (latitudine, longitudine, velocita' e quota) del cellulare. Una volta prelevate le coordinate geografiche vengono inviate, sempre con il consenso del possessore del cellulare, al sito.
1. Geolocalizzazione e
mappe in Windows
Phone 8
Annalisa Berti
annalisa.berti@studentpartner.com
Microsoft Student Partner
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
3. Agenda
•
I servizi di geolocalizzazione
•
Come rilevare la posizione dell’utente
Gestire le problematiche che possono sorgere
Uso dell’emulatore
Privacy
I controlli Nokia Maps
Inserire e personalizzare il controllo
Mostrare la posizione dell’utente sulla mappa
Mostrare l’indirizzo come segnaposto
•
Launcher
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
4. Dati di posizione
•
GPS:
+precisione, +consumo batteria, +tempo fixing, -uso
indor
•
Rete cellulare:
-precisione, - consumo batteria, - tempo fixing, -zone
isolate
•
Wi-fi:
+/-precisione, +/- batteria, +/- velocità fixing,
+/-area urbana
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
5. I servizi di geolocalizzazione
•
API allineate con quelle disponibili in Windows 8
Classe: Geolocator
Namespace: Windows.Device.Geolocation
•
Gestione automatica del sistema di rilevamento della posizione in base
alle condizioni necessarie
•
Possibile specificare il grado di precisione (in metri o per tipo)
DesiredAccuracyInMeters
DesiredAccuracy = PositionAccuracy.High (posizione + precisa)
DesiredAccuracy = PositionAccuracy.Default (minimo consumo
batteria)
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
6. Capability: ID_CAP_LOCATION
Per l’utilizzo dei servizi
di geolocalizzazione è
necessario dichiarare
la capability
ID_CAP_LOCATION nel
Manifest
(WMAppManifest.xml)
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
7. Geolocator: LocationStatus
L’utente può aver disabilitato i servizi di
geolocalizzazione
Se LocationStatus (proprietà del geolocator) =
PositionStatus.Disabled, i servizi di
geolocalizzazione sono disablitati
Prima di procedere alla rilevazione delle
posizione verificare che i servizi di
gelocalizzazione non siano disabilitati.
Per mandare l’utente alla schermata di
impostazioni:
Windows.System.Launcher.LaunchUriAsync(n
ew Uri("ms-settings-location:"));
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
8. Modalità di rilevazione
Rilevazione puntuale
•
Metodo asincrono GetGeopositionAsync();
•
Ritorna un Geoposition, contenente le informazioni relative alla
posizione rilevata.
Rilevazione continuativa
•
StatusChanged: scatenato quando lo stato del segnale cambia
•
PositionChanged: scatenato quando la posizione dell’utente cambia
Restituisce un LocationStatus
Frequenza: per distanza (MovementThreshold) o tempo (ReportInterval)
Restituisce la posizione corrente
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
9. Rilevazione puntuale
private async void OneShotLocationButton_Click(object sender, EventArgs e)
{
Geolocator geolocator = new Geolocator(){ DesiredAccuracy = PositionAccuracy.Default };
try
{
Geoposition geoposition = await geolocator.GetGeopositionAsync(
maximumAge: TimeSpan.FromMinutes(5), timeout: TimeSpan.FromSeconds(10) );
// Do something with position
MessageBox.Show(string.Format("Lat: {0}, Long: {1}", geoposition.Coordinate.Latitude,
geoposition.Coordinate.Longitude));
}
catch (Exception)
{
// the application does not have the right capability or the location switch is off
MessageBox.Show("Location is disabled in phone settings");
}
}
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
11. Location tracking in background
Solo un’applicazione alla volta può essere eseguita in background
• Se l’utente apre un’altra applicazione anch’essa con funzionalità di location
tracking, quest’ultima prende il posto di quella in esecuzione.
L’applicazione può essere terminata se:
L’utente disabilita i servizi di geolocalizzazione
Memoria del dispositivo si sta esaurendo
Se è attiva la modalità per il risparmio della batteria
L’applicazione è attiva in background da più di 4 ore senza essere riaperta
Per abilitare la funzionalità va modificato il Manifest (nodo DefaultTask)
Possibile determinare quando l’app è in esecuzione in background o
meno e agire di conseguenza.
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
13. Privacy
Richiedere all’utente il consenso all’utilizzo della
posizione
Prevedere una schermata all’interno
dell’applicazione in cui dare la possibilità di
revocare il consenso.
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
I dati di posizione dell’utente sono dati sensibili
Specificare all’utente in che modo e a che fini
utilizzate la sua posizione
14. Il controllo Nokia Maps
<phone:PhoneApplicationPage
...
xmlns:maps="clr-namespace:Microsoft.Phone.Maps.
Controls; assembly=Microsoft.Phone.Maps">
...
<!--ContentPanel - place additional content-->
<Grid x:Name="ContentPanel" Grid.Row="1"
Margin="12,0,12,0">
<maps:Map Name="myMap"/>
</Grid>
</phone:PhoneApplicationPage>
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
15. Capability: ID_CAP_MAP
Per poter utilizzare la
mappa è necessario
selezionare la
capability ID_CAP_MAP
nel Manifest
(WMAppManifest.xml)
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
16. Controllo Nokia Maps: Proprietà
XAML
<maps:Map Name= "myMap"
Center="45.4642, 9.1898"
ZoomLevel="16"/>
Code
private void CenterAndZoomMap()
{
myMap.Center = new GeoCoordinate(45.4642,
9.1898);
myMap.ZoomLevel = 16;
}
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
17. CartographicMode
Per cambiare la vista della mappa modificare la proprietà CartographicMode
Road (default)
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Aerial
Hybrid
Terrain
18. ColorMode
Per cambiare il tema della mappa impostare la proprietà ColorMode
Light (default)
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Dark
19. Pitch, Heading e LandmarksEnabled
<maps:Map Name= "myMap" LandmarksEnabled="true" Pitch="60"/>
Pitch:
Heading
Angolo
rispetto
all’orizzonte
(0 - 75)
Rotazione della
mappa
0/360: Nord
•
90: Est
•
180: Sud
•
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
•
270: Ovest
21. Mappe e servizi di geolocalizzazione
private async void OneShotLocationButton_Click(object
sender, EventArgs e)
{
...
// Get current position
Geoposition geoposition = await
geolocator.GetGeopositionAsync(
maximumAge: TimeSpan.FromMinutes(5),
timeout: TimeSpan.FromSeconds(10)
);
// Set map center
MyMap.Center = geoposition.Coordinate.ToGeoCoordinate();
// Set zoomLevel
MyMap.ZoomLevel = 11;
...
}
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
22. Mostrare dei segnaposti sulla mappa
•
1.
Non esistono specifici Pushpin in WP8
Possiamo crearlo con i livelli:
Ogni mappa può contenere uno o più layer (MapLayer)
Ogni MapLayer può contenere uno o più MapOverlay
Ogni MapOverlay rappresenta un elemento
2.
Uso Pushpin di Windows Phone Toolkit
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
23. Segnaposto con i livelli
private void DrawEllipsePushPin(GeoCoordinate myPosition)
{
MapOverlay ellipseOverlay = new MapOverlay
{
GeoCoordinate = myPosition,
Content = new Ellipse
{
Fill = new SolidColorBrush(Colors.Red),
Width = 30,
Height = 30
},
PositionOrigin = new Point(0.5, 0.5)
};
MapLayer layer = new MapLayer();
layer.Add(ellipseOverlay);
MyMap.Layers.Add(layer);
}
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
24. Segnaposto con il Toolkit
<phone:PhoneApplicationPage
xmlns:toolkit="clr-namespace:Microsoft.Phone.Maps.Toolk
it;assembly=Microsoft.Phone.Controls.Toolkit"
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1"
Margin="12,0,12,0">
<maps:Map Name="MyMap">
<toolkit:MapExtensions.Children>
<toolkit:Pushpin x:Name="MyPushpin"
Content="Io sono qui"
GeoCoordinate="45.4642, 9.1898"
<toolkit:Pushpin/>
</toolkit:MapExtensions.Children>
</maps:Map>
</Grid>
</phone:PhoneApplicationPage>
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
25. Da coordinata ad indirizzo
private void ReverseGeocoding(Geoposition geoposition)
{
ReverseGeocodeQuery reverseGeocode = new ReverseGeocodeQuery
{
GeoCoordinate = new GeoCoordinate(45.4642, 9.1898)
};
reverseGeocode.QueryCompleted += reverseGeocode_QueryCompleted;
reverseGeocode.QueryAsync();
}
void reverseGeocode_QueryCompleted(object sender,
QueryCompletedEventArgs<IList<MapLocation>> e)
{
MapAddress geoAddress = e.Result[0].Information.Address;
// Set pushpin Content with geoAddress
}
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
27. Interagire con il pushpin
XAML
<maps:Map Name="MyMap">
<toolkit:MapExtensions.Children>
<toolkit:Pushpin x:Name="MyPushpin"
Tap="MyPushpin_Tap"/>
</toolkit:MapExtensions.Children>
</maps:Map>
Code
private void MyPushpin_Tap(object sender,
System.Windows.Input.GestureEventArgs e)
{
Pushpin pushpin = sender as Pushpin;
MessageBox.Show(pushpin.Content.ToString());
}
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
28. I launcher
MapDownloader: permette all’utente di scaricare le mappe da
utilizzare offline.
MapUpdaterTask: permette di aggiornare le mappe che l’utente ha
scaricato per uso in modalità offline.
MapsTask: apre l’applicazione Here Maps mostrando un determinato
punto che possiamo indicare (come coordinata o come indirizzo).
MapsDirectionsTask: apre l’applicazione Here Maps in modalità
«itinerario». Possiamo lanciare il task indicando la posizione di partenza
e/o di arrivo.
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
29. Riferimenti
Sviluppare applicazioni per Windows Phone 8, Matteo Pagani
Microsoft Virtual Academy, corso: Building Apps for Windows Phone 8
Jump Start. http://bit.ly/1jqt4cZ
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
30. Q&A
Tutto il materiale di questa sessione su
http://www.communitydays.it/
Lascia il feedback su questa sessione,
potrai essere estratto per i nostri premi!
Seguici su
Twitter @CommunityDaysIT
Facebook http://facebook.com/cdaysit
#CDays14
#CDays14 – Milano 25, 26 e 27 Febbraio 2014