Bonjour,

Je fais une application web avec leftlet pour dessiner des polygones sur une carte.

Quand je dessine un polygone, l'événement
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);
  });
est appelé.

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
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);
 
  }
}
Sur un ordinateur, le prompt est affiché une fois. Je rentre un nom et le tout est sauvé dans ma DB.

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????