|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
propriété ..zoom sous iOS |
Started by Claude, Jul., 25 2018 9:10 AM - 2 replies |
| |
| | | |
|
| |
Posted on July, 25 2018 - 9:10 AM |
Bonjour à toutes et à tous, Je rencontre un problème dans une application mobile pour Android et iOS développée avec Windev Mobile 23 (53k). Dans une fenêtre j'ai un champ carte (Google maps) que je traite avec les fonctions WL. Je dois selon plusieurs paliers de pourcentage de zoom de la carte, afficher des couches de marqueurs supplémentaires. Pour ce faire, dans un thread j'appelle une procédure qui me retourne la propriété ..zoom de la carte et qui déclenche selon cette valeur la création de ma couche de marqueurs (ou la suppression).
ThreadMode(threadAuto) ThreadExecute("ThreadActuCarte", threadNormal, ThreadAfficherMarqueursSurZoom)
Procedure ThreadAfficherMarqueursSurZoom()
bThreadCarteEnVie est un booléen = Vrai TANTQUE bThreadCarteEnVie ExécuteThreadPrincipal(getCarteZoom)
SI gnZoomEnCours >= _POI_ZOOM_AFFICHAGE_STATIONNEMENTS ALORS AfficherMarqueurs_Stationnements() SINON SI gnNBMarqueur_Stationnements > 0 ALORS SI gnMarqueur_Sélectionné_Type = _POI_STATIONNEMENTS ET ExécuteThreadPrincipal(ThreadGetEtatAgrandieCarte) = Faux ALORS ExécuteThreadPrincipal(Déselectionne_Marqueur) ExécuteThreadPrincipal(AgrandirRéduireCarte) FIN ExécuteThreadPrincipal(EffacerGroupeMarqueurs,_POI_STATIONNEMENTS) ThreadPause(1s) FIN FIN
ChronoDébut(2) TANTQUE bThreadCarteEnVie _ET_ ( ChronoValeur(2) < 3000 ) ThreadPause(50cs) SI gbActualisation_Auto_Carte_Activé = Faux ALORS bThreadCarteEnVie = Faux Trace("--[ ThreadActuCarte ] Arrêt du thread de la CARTE --") FIN FIN ChronoFin(2) FIN
Procedure getCarteZoom()
gnZoomEnCours = CARTE..Zoom PositionCarteXY1 = CarteInfoXY(CARTE, 0, 0) PositionCarteXY2 = CarteInfoXY(CARTE, CARTE..Largeur, CARTE..Hauteur)
En WL j'ai trouvé que ce moyen pour intercepter le changement de zoom. Si quelqu'un connait une autre solution je suis preneur.
Sous le simulateur Windev, l'ensemble fonctionne bien pour Android et iOS. Sur les smartphones Android c'est également OK, mais avec les iPhones la propriété ..zoom de la carte renvoi toujours -1 et donc l'affichage de mes marqueurs n'est pas effectué. Quelqu'un a-t-il déjà rencontré ce problème ou a-t-il une piste ?
Petite précision, pour Android je maîtrise l'ensemble, création et déploiement de l'APK sur le PlayStore ; Par contre pour iOS, je fournis la génération WinDev et mon client s'occupe de la compilation sous XCode et du déploiement sur l'Appel Store. Il est donc compliqué de faire une multitude de tests sur iPhone pour identifier le problème.
Merci d'avance
Bien cordialement, Claude |
| |
| |
| | | |
|
| | |
| |
Registered member 102 messages Popularité : +4 (4 votes) |
|
Posted on July, 26 2018 - 10:57 AM |
Salut Question bête : pourquoi utiliser un thread pour appeler getCarteZoom() ? En général, je ne les utilise que sous Universal. Sous Android et iOS j'ai du mal à les gérer. ...d'autant qu'ici, sauf erreur de ma part, il s'agit de threads dans un thread !!!
Au passage, est-ce que threadPause fonctionne vraiment ici sous iOS et Android ? Sous Universal je l'utilise pour temporiser mes procédures mais sous iOS ça n'a aucun effet et sous Android, ça plante. Il me faut alors utiliser multitache(-1) dans une boucle ChronoDébut/ChronoFin comme ici. |
| |
| |
| | | |
|
| | |
| |
Posted on August, 11 2018 - 5:02 PM |
Salut Dav. >> pourquoi utiliser un thread pour appeler getCarteZoom() ? Le but globale est de récupérer continuellement la valeur du zoom pour pouvoir afficher ou cacher une couche de certains POIs uniquement à partir d'une certaine valeur de zoom. J'appelle getCarteZoom() dans un Thread pour effectuer en permanence cette lecture et déclencher les autres actions. Le problème c'est qu'en utilisant uniquement les fonctions WL. de gestion du champs carte, je n'arrive pas à intercepter le changement de zoom par un événement. Certainement possible en utilisant du JavaScript, mais là on rentre dans un autre monde.
il s'agit de threads dans un thread !!! Oui et Non, le Thread principal (ExécuteThreadPrincipal) est le thread principal l'application en cours. Le thread secondaire "ThreadActuCarte" est un processus lancé en parallèle de l'application en cours et dans mon cas uniquement exécuté dans le périmètre de la fenêtre carte.
>> Au passage, est-ce que threadPause fonctionne vraiment ici sous iOS et Android Oui ça fonctionne. Je n'ai pour le moment rencontré aucun problème ni plantage sous Android ou iOS.
Claude |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|