Bonjour,
Je fais une application web avec leftlet pour dessiner des polygones sur une carte.
Quand je dessine un polygone, l'événement
est appelé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 app.map.on(L.Draw.Event.CREATED, function (e) { var type = e.layerType, layer = e.layer; // console.log("e.layer"); //console.log(e); /* {"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-1.6040039062500002,52.09975692575725],[-2.0544433593750004,51.92733099026087],[-1.7358398437500002,51.70320428462806],[-0.9448242187500001,51.951036645095904],[-1.6040039062500002,52.09975692575725]]]}} */ /* if (type === 'polygon') { layer.bindPopup('A polygon!'); } if (type === 'rectangle') { layer.bindPopup('A rectangle!'); } if (type === 'circle') { layer.bindPopup('A circle!'); } */ //FGfences.addLayer(layer); var shape = layer.toGeoJSON() var shape_for_db = JSON.stringify(shape); app.saveGeofences(app.devise_id,shape_for_db); });
Puis il appelle la fonction daveGeofences, pour la sauver dans une base de donnée.
Tout se passe bien sur un ordinateur.
Voici la fonction en question et ma question qui suit
Sur un ordinateur, le prompt est affiché une fois. Je rentre un nom et le tout est sauvé dans ma DB.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 app.saveGeofences = function(devise_id, data){ var fense_name = prompt("Give a name", ""); $.ajax({ type: "POST", url: "maps/sql/saveGeofences.php", //data: {data:data}, data: {devise_id:devise_id, data:data, fense_name:fense_name}, beforeSend: beforeBeSent, success: result, error: error, dataType: "json" }); function beforeBeSent(data) { } function error(data) { console.log("Error saveGeofences"); console.log(data); } function result(data){ console.log("Geofences created"); app.getGeofences(devise_id,0,true,false); } }
Par contre, sur un smartphone (j'ai essayé que sur un iPhone, je recois deux fois le prompt. Si la deuxième fois, si je le laisse vide, il y a deux nouvelles entrées dans ma base. Une avec un nom et une autre sans nom.
J'ai essayé sur un ordinateur portable avec un ecran tactile, et ca marche bien. J'ai fais le teste de l'écran tactile, car ca fonctionne comme ceci sur un smartphone
Pourquoil il exécute deux fois cette fonction, alors qu'il n'y a pas de boucle????
Partager