PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Windev Mobile et Javascript ( utilisation de PocketMaps) Carto+Navi mode deconnecte
Windev Mobile et Javascript ( utilisation de PocketMaps) Carto+Navi mode deconnecte
Débuté par Alan Baccharetti, 26 jan. 2021 02:25 - 3 réponses
Posté le 26 janvier 2021 - 02:25
Bonjour on essaie de transpose le projet Github PocketMaps pour pouvoir utiliser de la cartographie et de la navigation en mode OffLine. On a deja transpose d'autre projet Android plus simples, mais celui-ci est plus complique.

Si quelqu'un peut nous debloquer cela serait tres apprecie.

Merci

Detail :

Utilisation des composants PocketMaps dans Windev ( Pcsoft )

Besoin initial :
Utiliser la cartographie et la navigation en mode Hors-ligne dans une application WinDev mobile.
Trouver un spécialiste Windev+Javascript
Problématique :
Transposer le code du projet Android dans WinDev mobile (langage Javascript)
Plusieurs projets ont déjà été transposé depuis du JS vers du Windev, mais jamais aussi complexe.
Un projet WinDev a été débuté ( téléchargement des cartes et affichage Carte )

Fonctions utiles dans le projet Android :
- MapHandler.java
public void init(MapView mapView, String currentArea, File mapsFolder)
public void loadMap(File areaFolder, MapActivity activity)
void loadGraphStorage(final MapActivity activity) {

Différentes techniques ont été tentées :
- Via un champ HTML, mais ne fonctionne bien que lorsque l’on utilise des fichiers .js, mais les .java ne passent pas bien sans refaire la synthaxe.
- Via un champ Natif, mais tres difficile a debugger lorsque la compilation ne passe pas.

1. Projet GITHub à transposer

https://github.com/junjunguo/PocketMaps
Free offline maps with routing functions and more ...

This project uses OSM data, Mapsforge-vtm and Graphhopper open source API.

2. Projet Android


On utilise les repository

maven {
url "https://mvnrepository.com/artifact/com.graphhopper/graphhopper"
}
maven {
url "https://mvnrepository.com/artifact/org.mapforge/mapsforge-map"
}

3. Projet Windev

Exemple de code qui ne compile pas :

public static void CarteInitialiser( String sNomChampCarte )
{

// Création de la carte
MapView mapView = new MapView(document.getElementById(sNomChampCarte));

//mapView.setClickable(true);

// Map events receiver
//mapView.map().layers().add(new MapEventsReceiver(mapView.map()));

// Map file source
MapFileTileSource tileSource = new MapFileTileSource();
tileSource.setMapFile(new File(areaFolder, currentArea + ".map").getAbsolutePath());

VectorTileLayer l = mapView.map().setBaseMap(tileSource);

}


Rapport d’erreurs
Echec de la création de l'application Android <C:\Mes Projets Tests\PocketMaps_POC\Exe\Application Android\PocketMaps_POC.apk>.


Ligne de commande : "C:\Program Files\Java\jdk-10.0.2\bin\java.exe" -Duser.dir="C:\Mes Projets Tests\PocketMaps_POC\Android\gen" "-Dorg.gradle.appname=C:\Mes Projets Tests\PocketMaps_POC\Android\gen" -classpath "C:\Users\Alan\AppData\Roaming\PC SOFT\26.0\Android\Gradle\lib\gradle-launcher-5.4.1.jar" org.gradle.launcher.GradleMain assembleRelease -b "C:\Mes Projets Tests\PocketMaps_POC\Android\gen\build.gradle"


Erreur retournée :
:compileReleaseJavaWithJavac
C:\Mes Projets Tests\PocketMaps_POC\Android\gen\src\com\masociete\pocketmaps_poc\wdgen\GWDCPCOL_Carte_PocketMaps_Android.java:139: error: cannot find symbol
MapView mapView = new MapView(document.getElementById(sNomChampCarte));
^
symbol: variable document
location: class GWDCPCOL_Carte_PocketMaps_Android
C:\Mes Projets Tests\PocketMaps_POC\Android\gen\src\com\masociete\pocketmaps_poc\wdgen\GWDCPCOL_Carte_PocketMaps_Android.java:148: error: cannot find symbol
tileSource.setMapFile(new File(areaFolder, currentArea + ".map").getAbsolutePath());
^
symbol: variable areaFolder
location: class GWDCPCOL_Carte_PocketMaps_Android
C:\Mes Projets Tests\PocketMaps_POC\Android\gen\src\com\masociete\pocketmaps_poc\wdgen\GWDCPCOL_Carte_PocketMaps_Android.java:148: error: cannot find symbol
tileSource.setMapFile(new File(areaFolder, currentArea + ".map").getAbsolutePath());
^
symbol: variable currentArea
location: class GWDCPCOL_Carte_PocketMaps_Android
Note: C:\Mes Projets Tests\PocketMaps_POC\Android\gen\src\com\masociete\pocketmaps_poc\wdgen\GWDFFEN_Main_Mobile.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 errors

> Task :compileReleaseJavaWithJavac FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileReleaseJavaWithJavac'.
Compilation failed; see the compiler error output for details.


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 25s
10 actionable tasks: 6 executed, 4 up-to-date
Membre enregistré
3 335 messages
Popularité : +93 (137 votes)
Posté le 26 janvier 2021 - 07:45
Salut Alan,
Je ne sais si tu as réellement transposer des projets Android en windev.
Car la première erreur est simple a résoudre
Car il manque l'import correspondant à mapview.
import org.oscim.android.MapView;
Mais une fois résolu cela, tu auras l'obligation de remplacer
getElementById
Pareil pour setMapFile, il manque l'import
Il se peut que ce soit le même que mapview
Mais bon, j'ai pas le temps de chercher pour vérifier.
En plus, ici il n'y a aucun code JavaScript mais Java.
Enfin bon, il se peut que tu utilises aussi du JavaScript dans ton projet.
Donc, que tu dis être un spécialiste, je te laisse.
Personnellement j'ai des doutes.
Membre enregistré
3 335 messages
Popularité : +93 (137 votes)
Posté le 26 janvier 2021 - 07:57
Oups, la deuxième erreur c'est areaFolder qui manque l'import.
Et troisième sur currentArea.
Mais bon tu auras compris (c'est sur la même ligne que setMapFile)
CurrentArea c'est une variable
private String currentArea;
Je suppose que areaFolder est aussi une variable
File areaFolder;
Donc voila.
C'est du vite fait, pas le temps de peaufiner.
Posté le 17 février 2021 - 21:36
Merci pour les remarques.

Effectivement, le mélange JS, Java, et WinDev, est assez mêlant.

C'est facile en Webdev, windev, android sutdio, mais windev mobile veut rien savoir