2

グーグルマップAPIのv2を使用するアプリケーションをv3に変換しています。この一環として、MarkerManagerもv3バージョンにアップグレードする必要がありました。

ユーザーが地図をズームするまでマーカーが表示されないという奇妙な問題があります。その後、マーカーが表示されます。

その後、元のズームレベルにズームバックすると、マーカーが残るため、最小/最大ズームの問題ではありません。firebug \ javascript consoleにエラーは報告されていません。マーカーが追加された場所にブレークポイントまたはconsole.logを配置すると、間違いなく追加されています。

アプリケーションはかなり大きいので、ここにすべてのソースを置くことはできませんが、マーカーが追加されるコードは次のとおりです。

    console.log("Adding Marker");
    markerManager.addMarker(marker, 1, 19);
    markerManager.refresh();

そして、marker作成されるコードは次のようになります。

        var latLng = new google.maps.LatLng(y, x);
        var marker = new MarkerWithLabel({
            position: latLng,
            title: "title",
            labelClass: "marker",
            labelContent: "Test",
            icon: icon,
            labelAnchor: new google.maps.Point(26, 32)
        });

iconはただのgoogle.maps.MarkerImageです。MarkerManagerとMarkerWithLabelはここに文書化されています:

http://google-maps-utility-library-v3.googlecode.com/svn/tags/markermanager/1.0/docs/reference.html

http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerwithlabel/1.1.7/docs/reference.html

編集:マーカーマネージャーを作成した後、何かを行う前にそれを追加する必要があります。次のようになっているので、読み込まれるまで何も追加しようとはしていません。

google.maps.event.addListenerOnce(markerManager, 'loaded', function () {

私の間違いがどこにある可能性が高いかについて誰かが何か提案がありますか?

4

1 に答える 1

0

これに対する修正を見つけましたが、他にどのような影響があるかはよくわかりません。基本的にmarkermanager.jsで次を置き換えました(〜130行目)

google.maps.event.addListener(map, 'dragend', function () {
    me.onMapMoveEnd_();
});
google.maps.event.addListener(map, 'zoom_changed', function () {
    me.onMapMoveEnd_();
});

これで、マーカーは期待どおりに表示されます。私はmarkermanagerファイルを編集したくないので、他のアイデアにもオープンです.これを行うことによるパフォーマンス(またはその他)への影響については確信が持てません.

google.maps.event.addListener(map, 'idle', function () {
    me.onMapMoveEnd_();
});

編集:markermanager.js dev バージョンを見ると、3 つのイベントがすべて含まれています。したがって、他の誰かがこの問題を抱えている場合は、v1.1 を使用する価値があるかもしれません。

http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markermanager/src/markermanager.js

于 2012-11-06T20:31:54.463 に答える