1

我用图像制作了一个可调整大小的自定义叠加层,它可以工作,你可以在这里看到它,
调试。在右上角和左下角有一些红色的角图标,您可以拖动并调整图像和覆盖的大小。问题是,当您缩小图像时,会留下较大比例图像的残余。

然后我添加了一个函数来在绘制新的覆盖之前删除覆盖,直接从示例中出来,overlay.onRemove(); 它起作用了,但是一旦您取消单击标记,它就会给出错误“父节点:对象为空或未定义”,您可以在这里看到它debug2

如果您查看它们的源代码,第 173 行的拖动侦听器并调用 overlay = new USGSOverlay(bounds, srcImage, map, 'yes'); 在第 194 行。

该函数位于第 71 行。查找 ifDrag 然后删除之前的叠加层,我对它为什么起作用感到困惑,但是一旦您取消单击标记,它就会引发错误并破坏脚本。

如果有人可以为我提供错误的修复或解决方法,那就太棒了。这是一个非常好的功能,而且离放弃太近了。谢谢。

4

2 回答 2

0

我们得出的结论是,太多的事件被触发并杀死了脚本,“dragend”是解决方案(不完美但有效),适用于所有浏览器并将不透明度设置为 50% 以获得与位置的完美对齐。感谢你的帮助。干杯。

于 2012-05-03T12:15:18.933 回答
0

我相信您的问题出在draw功能上:

var div;
USGSOverlay.prototype.draw = function() {
  // Size and position the overlay. We use a southwest and northeast
  // position of the overlay to peg it to the correct position and size.
  // We need to retrieve the projection from this overlay to do this.
  var overlayProjection = this.getProjection();
  // Retrieve the southwest and northeast coordinates of this overlay
  // in latlngs and convert them to pixels coordinates.
  // We'll use these coordinates to resize the DIV.
  var sw = overlayProjection.fromLatLngToDivPixel(this.bounds_.getSouthWest());
  var ne = overlayProjection.fromLatLngToDivPixel(this.bounds_.getNorthEast());
  // Size the image's DIV to fit the indicated dimensions.
  div = this.div_;
  div.style.left = sw.x + 'px';
  div.style.top = ne.y + 'px';
  div.style.width = (ne.x - sw.x) + 'px';
  div.style.height = (sw.y - ne.y) + 'px';
}

您不想删除外部声明var div并在draw函数引用中进行引用this.div吗?我相信这是你的问题。

draw不应该像这样实现最后几行:

//Remove this line:
//div = this.div_;
this.div_.style.left = sw.x + 'px';
this.div_.style.top = ne.y + 'px';
this.div_.style.width = (ne.x - sw.x) + 'px';
this.div_.style.height = (sw.y - ne.y) + 'px';

add您在函数中也有类似的代码。我建议您制作add类似的代码 - 直接使用this.div_; 看起来你可能会得到一个参考。

于 2012-05-02T17:45:49.597 回答