0
我试图在开放街道地图处理鼠标双击事件,使用下面的代码:离子:内的OpenLayers鼠标事件没有处理
var map = new OpenLayers.Map("basicMap");
var mapnik = new OpenLayers.Layer.OSM();
var fromProjection = new OpenLayers.Projection("EPSG:4326");
// Transform from WGS 1984
var toProjection = new OpenLayers.Projection("EPSG:900913");
// to Spherical Mercator Projection
var position = new OpenLayers.LonLat(13.41,52.52).transform(fromProjection, toProjection);
var zoom = 15;
map.addLayer(mapnik);
map.setCenter(position, zoom);
var markers = new OpenLayers.Layer.Markers("Markers");
map.addLayer(markers);
OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control,
{
defaultHandlerOptions:
{
'single': true,
'double': true,
'pixelTolerance': 0,
'stopSingle': false,
'stopDouble': false
},
initialize: function(options)
{
this.handlerOptions = OpenLayers.Util.extend({},this.defaultHandlerOptions);
OpenLayers.Control.prototype.initialize.apply(this, arguments);
this.handler = new OpenLayers.Handler.Click(this, {'click': this.trigger}, this.handlerOptions);
},
trigger: function(e)
{
var lonlat = map.getLonLatFromViewPortPx(e.xy);
alert("clicked");
alert("Lat, Lon : " + lonlat.lat + ", " + lonlat.lng);
markers.addMarker(new OpenLayers.Marker(lonlat));
},
touchstart: function(e)
{
console.log();
},
touchend: function(e)
{
console.log();
},
handleSingle: function(e)
{
console.log();
}
});
var control = new OpenLayers.Control.Click();
map.addControl(control);
control.activate();
然而,做一些测试后。虽然在地图显示正确的情况下我没有在控制台上发现任何错误,但从未显示“点击”消息。
那么上面的代码中有什么问题吗?怎么可能解决这个问题?
注意:我正在使用Ionic框架。
任何帮助将不胜感激。
谢谢。
谢谢你的帮助。我尝试了你建议的代码,但我仍然面临同样的问题。请在上面的问题上查看我的更新代码。 – Kais
这是你的代码https://jsfiddle.net/fradal/0bfwvcyz/的小提琴。它似乎按预期工作... – fradal83
是的,那是有效的。但它不适用于我的Ionic/Cordova应用程序。这很奇怪。 – Kais