2013-09-19 4 views
0

Я разработал веб-приложение Javascript, используя dojo и API Javascript ESRI. Главная страница приложения - это вид карты, где пользователь может добавлять точки на карте.Сенсорный экран Коснитесь стрелок onClick Event дважды

На моем рабочем столе веб-браузер, когда я нажимаю на карту, добавляется одна новая точка, и если я отлаживаю, я вижу, что мой обработчик onClick вызывается только один раз.

На моем iPad, когда я нажимаю карту, 2 точки добавляются в том же месте. Когда я отлаживаю приложение на iPad через Safari на своем Macbook Pro, я вижу, что обработчик onClick вызывается дважды. После дальнейшей отладки я убедился, что код, который создает мой обработчик onClick, вызывается только один раз.

startEditing : function(template) { 

    main.selectHandle.pause(); 
    main.moveHandle.pause(); 

    var drawingTool = template.template.drawingTool; 

    switch(drawingTool) { 
     case FeatureTemplate.TOOL_POINT: 
      drawingTool = Draw.POINT; 
      break; 
    } 

    this.drawEndHandle = on(this.drawingToolbar, "draw-end", lang.hitch(this, this.createFeature, template)); 

    this.drawingToolbar.activate(drawingTool); 
}, 

stopEditing : function() { 

    this.drawingToolbar.deactivate(); 
    this.drawEndHandle.remove(); 

    main.selectHandle.resume(); 
    main.moveHandle.resume(); 

}, 

createFeature : function(template, evt) { 

    var featureLayer = template.featureLayer; 
    template = template.template; 

    var prototype = template.prototype; 

    var geometry = evt.geometry; 

    var graphic = new Graphic(prototype.toJson()); 
    graphic.setGeometry(geometry); 

    this.initAttributes(graphic, featureLayer).then(function() { 

     var features = [graphic]; 

     featureLayer.applyEdits(features).then(function(addResults) { 
      var objectIds = array.map(addResults, function(addResult) { 
       return addResult.objectId; 
      }); 

      var q = new Query(); 
      q.objectIds = objectIds; 

      featureLayer.selectFeatures(q).then(function(features) { 
       main.openForm(features); 
      }); 
     }); 

    }); 

}, 

drawingToolbar в функции startEditing выше представленной API ESRI Javascript, но обрабатывает onClick события внутри и передает его на onDrawEnd случае, я обработку в моем коде. У меня есть другой код, который обрабатывает событие onClick напрямую, и он также срабатывает дважды.

UPDATE

Я просто проверял ту же функциональность на моем Android смартфоне, и также обжиг onClick событие дважды с одним нажатием.

+0

У меня точно такой же вопрос, используя ESRI JavaScript API. –

ответ

0

У меня такая же проблема в приложении, которое я создаю. Я также использую API Javascript ESRI.

Я чувствую, что должен быть обработчик событий на карте, на уровне функциональности или на одном из контейнеров диджита, который проходит по событию касания иначе, чем щелчок.

В конце концов, я просто мой противодребезговую защиту обработчик щелчка, как описано здесь: http://unscriptable.com/2009/03/20/debouncing-javascript-methods/

Смежные вопросы