2012-05-03 8 views
1

私はしばらくの間これについて作業しており、わかりません。私はV2からV3に持ってきようとしているGoogleマップのコードを持っています。私はすべての機能は果たしているが、通常の情報ウィンドウを置き換えるオーバーレイはある。この行:GoogleマップV2からV3マーカーオーバーレイが動作しない(JQuery)

V3では動作しなくなりました。 $( "#infoCallout")は隠れたdivです。私は何かが欠けています感じhttp://brammoforum.com/brammo-owners-map.php

http://empulseforum.com/brammoMapV3.php

そして、ここでV2にうまく働い:今オーバーレイはちょうど

は、私がこれまでにここに持っているものを参照してください...左上に現れます簡単です。

ありがとうございます!

答えて

0

OverlayViewfromLatLngToContainerPixelメソッドを使用してください。

+0

お返事ありがとうございます!私はそのCSSもどちらかと思っていませんが、私はdiv(オーバーレイ)をマップの "pane"に追加することと関係があると思います。私はそれを把握できません。 – Spiffster

+0

それはマーカーの位置を取得しますが、オーバーレイを助けません。 – Spiffster

+0

申し訳ありませんが、私は間違った質問のCSSに関する答えを書いています! OverlayView内にオーバーレイを表示する必要があります。オーバーレイビューはマップとの関係で正しく表示されます。 –

1

まず、私はあなたのリンクで新しいサイトを表示したときに、ページがスロー:捕捉されないにReferenceErrorを:markerOffsetは(再フォーマット)されたライン73、でが定義されていません。

​​

それが見るのは簡単です

//var markerOffset = map.fromLatLngToDivPixel(markers.getPosition()); 

だから、あなたがライン72とリファクタリング私のコードのコメントを解除する必要があります。このコードは、前の行(行72)上のコードをコメントアウトされているため、定義されていないmarkerOffset、ないと動作しないことv3で動作するようにするapi:

  1. 内部コール:markers.getPosition()はv3でも有効です。これまでのところとても良い
  2. 外部呼び出し:map.fromLatLngToDivPixel()はv3ではなくなりました。これと関連するコールはクラスgoogle.maps.MapCanvasProjectionに移動されました。投影は、OverlayView.getProjection()を呼び出して到達可能です。それを一緒にもたらす

は、私はあなたにdisplayPoint関数内のコードを変更してみてくださいお勧め:

function displayPoint(markers, index) { 
    map.panTo(markers.getPosition()); 
    $("#infoCallout").hide(); 
    updateMemberInfo(pic[index], dN[index], bID[index], cS[index]); 

    // Next 2 lines are new and replace the old line of code: 
    var prjctn = overlay.getProjection();   
    var markerOffset = prjctn.fromLatLngToDivPixel(markers.getPosition()); 

    $("#infoCallout").fadeIn('slow').css({ 
     top: markerOffset.y + -107, 
     left: markerOffset.x -40 
    }); 
} 

もちろん、あなたが行うには、いくつかのデバッグを有していても良いように、このコードは、テストされていないが、私はこのことを願っていますコードはあなたが正しい方向に進むようにします。

関連する問題