startDrag: function(elem) {
elem.onmousedown =function(ev) {
dragObject = this;
mouseOffset = ws.m.pin.getMouseOffset(this, ev);
return false;
}
},
//information on where we clicked our item
getMouseOffset:function (target, ev){
ev = ev || window.event;
var mousePos = ws.m.pin.mouseCoords(ev);
var docPos = ws.m.pin.getPosition(target);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
},
//the coordinates of an item relative to the document
getPosition:function (e){
var left = 0;
var top = 0;
left = e.offsetLeft ;
top = e.offsetTop ;
return {x:left, y:top};
},
//capture the mouse coordinates
mouseCoords:function (ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
},
//Moving an Item
mouseMove:function (ev) {
ev = ev || window.event;
var mousePos = ws.m.pin.mouseCoords(ev);
//ws.map.px2Coords(mousePos);
var centerPixX = (1248 / 2) - mousePos.x;//($('#map_div').width() / 2) - p.x;
var centerPixY = (471 / 2) - mousePos.y;//($('#map_div').height() / 2) - p.y;
var diffMeterX = centerPixX * ws.map.scale;
var diffMeterY = centerPixY * ws.map.scale;
var x = Math.abs(diffMeterX - ws.map.center.x);
var y = Math.abs(diffMeterY + ws.map.center.y);
var widthHalf = 1248 / 2;
var heightHalf = 471 / 2;
var lux = ws.map.center.x - widthHalf * ws.map.scale;
var luy = ws.map.center.y + heightHalf * ws.map.scale;
// Pixel diff from left upper
var X = Math.round((x - lux) / ws.map.scale);
var Y = Math.round((luy - y) / ws.map.scale); if (dragObject) {
dragObject.style.position = 'absolute';
dragObject.style.top =Y+"px";//(Y-mouseOffset.y)+"px"; //(mousePos.y-mouseOffset.y)+"px";
dragObject.style.left =X+"px";//(X-mouseOffset.x)+"px"; //(mousePos.x-mouseOffset.x)+"px";
}
// track the current mouse state
lMouseState = iMouseDown;
return false;
},
//release an Item
mouseUp:function (ev) {
dragObject = null;
iMouseDown = false;
}
}
document.onmousemove = ws.m.pin.mouseMove;
document.onmouseup = ws.m.pin.mouseUp;上面代码已经能搞实现拖放功能,但是当我移动地图时,标签不动,因此,为了让标签也跟着移动,先把标签的坐标换成地理坐标,然后再换回像素坐标,但我移动地图时,dragobject是零,想问一下,如何修改,谢谢!
elem.onmousedown =function(ev) {
dragObject = this;
mouseOffset = ws.m.pin.getMouseOffset(this, ev);
return false;
}
},
//information on where we clicked our item
getMouseOffset:function (target, ev){
ev = ev || window.event;
var mousePos = ws.m.pin.mouseCoords(ev);
var docPos = ws.m.pin.getPosition(target);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
},
//the coordinates of an item relative to the document
getPosition:function (e){
var left = 0;
var top = 0;
left = e.offsetLeft ;
top = e.offsetTop ;
return {x:left, y:top};
},
//capture the mouse coordinates
mouseCoords:function (ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
},
//Moving an Item
mouseMove:function (ev) {
ev = ev || window.event;
var mousePos = ws.m.pin.mouseCoords(ev);
//ws.map.px2Coords(mousePos);
var centerPixX = (1248 / 2) - mousePos.x;//($('#map_div').width() / 2) - p.x;
var centerPixY = (471 / 2) - mousePos.y;//($('#map_div').height() / 2) - p.y;
var diffMeterX = centerPixX * ws.map.scale;
var diffMeterY = centerPixY * ws.map.scale;
var x = Math.abs(diffMeterX - ws.map.center.x);
var y = Math.abs(diffMeterY + ws.map.center.y);
var widthHalf = 1248 / 2;
var heightHalf = 471 / 2;
var lux = ws.map.center.x - widthHalf * ws.map.scale;
var luy = ws.map.center.y + heightHalf * ws.map.scale;
// Pixel diff from left upper
var X = Math.round((x - lux) / ws.map.scale);
var Y = Math.round((luy - y) / ws.map.scale); if (dragObject) {
dragObject.style.position = 'absolute';
dragObject.style.top =Y+"px";//(Y-mouseOffset.y)+"px"; //(mousePos.y-mouseOffset.y)+"px";
dragObject.style.left =X+"px";//(X-mouseOffset.x)+"px"; //(mousePos.x-mouseOffset.x)+"px";
}
// track the current mouse state
lMouseState = iMouseDown;
return false;
},
//release an Item
mouseUp:function (ev) {
dragObject = null;
iMouseDown = false;
}
}
document.onmousemove = ws.m.pin.mouseMove;
document.onmouseup = ws.m.pin.mouseUp;上面代码已经能搞实现拖放功能,但是当我移动地图时,标签不动,因此,为了让标签也跟着移动,先把标签的坐标换成地理坐标,然后再换回像素坐标,但我移动地图时,dragobject是零,想问一下,如何修改,谢谢!
var centerPixY =($('#map_div').height() / 2) - p.y; var centerPixX =(map_div.width() / 2) - p.x;
var centerPixY = (map_div.height() / 2) - p.y;
我试着用下面的这句话也不行,为什么var w=document.getElementById("map_image").width;