dojo
私は、ESRI Javascript APIを使用して Javascript Web アプリケーションを開発しました。アプリケーションのメイン ページは、ユーザーがマップ上にポイントを追加できるマップ ビューです。
onClick
私のデスクトップ Web ブラウザーでは、マップをクリックすると新しいポイントが 1 つ追加され、デバッグすると、ハンドラーが 1 回だけ呼び出されることがわかります。
私の iPad では、マップをタップすると、まったく同じ場所に 2 つのポイントが追加されます。onClick
Macbook Pro の Safari を介して iPad でアプリをデバッグすると、ハンドラーが 2 回呼び出されていることがわかります。onClick
さらにデバッグを行った結果、ハンドラーを作成するコードが 1 回だけ呼び出されることを確認しました。
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
関数は ESRI Javascript API によって提供されますが、onClick
イベントを内部でonDrawEnd
処理し、コードで処理しているイベントに渡します。イベントを直接処理する他のコードがonClick
あり、それも 2 回発生します。
アップデート
Android スマートフォンで同じ機能をテストしたところonClick
、1 回のタップでイベントが 2 回発生しました。