1

画像を使用してサイズ変更可能なカスタムオーバーレイを作成しました。これは機能します。ここで確認できます。
デバッグします。右上隅と左下隅には、画像とオーバーレイをドラッグしてサイズ変更できる赤い隅のアイコンがいくつかあります。問題は、画像を小さくすると、より大きなスケールの画像の残骸が残ることです。

次に、新しいオーバーレイを描画する前に、オーバーレイを削除する関数を追加しました。例から直接、overlay.onRemove(); 動作しましたが、マーカーのクリックを解除するとすぐに「親ノード:オブジェクトがnullまたは未定義です」というエラーが表示されます。debug2で確認できます。

それらのソースを表示する場合、173行目にドラッグリスナーがあり、overlay = new USGSOverlay(bounds、srcImage、map、'yes');を呼び出します。194行目。

関数は71行目にあり、ifDragを探してから前のオーバーレイを削除します。なぜそれが機能するのかわからないのですが、マーカーをクリックするとすぐにエラーがスローされ、スクリプトが壊れます。

誰かが私にエラーの修正または回避策を提供できれば素晴らしいでしょう。これは非常に優れた機能であり、近すぎて諦めません。ありがとう。

4

2 に答える 2

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内で参照を作成しませんか?それがあなたの問題だと思います。drawthis.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 に答える
0

非常に多くのイベントが発生してスクリプトが強制終了されたという結論に達しました。「ドラッグエンド」が解決策であり(完全ではありませんが機能します)、すべてのブラウザーで機能し、場所に完全に一致するように不透明度を50%に設定しました。あなたの助けに感謝。乾杯。

于 2012-05-03T12:15:18.933 に答える