在带有图像的可拖动可调整大小的自定义叠加层中,parentNode为null或未定义。 GMaps v3

时间:2012-05-02 16:56:36

标签: google-maps-api-3

我已经使用图像制作了可调整大小的自定义叠加层并且它可以正常工作,你可以在这里看到它,
debug。在右上角和左下角有一些红色角点图标,您可以拖动图像和叠加层并调整其大小。问题在于,当你使图像变小时,它会留下较大尺度图像的残余。

然后我添加了一个函数来删除叠加层,然后直接从示例中取出叠层,overlay.onRemove();它工作正常,但是一旦你取消单击标记就会出现错误“parentnode:object is null or undefined”,你可以在这里看到它debug2

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

该函数在第71行。并查找ifDrag,然后删除上一个叠加层,我感到困惑,为什么它可以工作但是只要你单击标记就会抛出错误并破坏脚本。

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

2 个答案:

答案 0 :(得分: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_;看起来你可能会混在一起参考。

答案 1 :(得分:0)

我们得出的结论是,太多事件被解雇并杀死了剧本,'dragend'是解决方案(不完美但有效),适用于所有浏览器并且将不透明度设置为50%以获得完美对齐地点。感谢您的帮助。欢呼声。