关闭InfoWindow时,Google maps v3 API标记会消失(InfoBubble)

时间:2012-03-07 21:17:50

标签: javascript google-maps google-maps-markers

我是JavaScript和谷歌地图API的新手。我无法弄清楚出了什么问题。

InfoWindow实际上是我发现的“InfoBubble”类。 http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobubble/examples/example.html/

情况如下:

1. I create my map and add a 'click' event. The event creates Markers. 
2. I create one global infoWindow.
3. I click the map, a Marker appears.
4. I click the map, a Marker appears.
5. I click the map, a Marker appears. Step 3-5 can be repeated lots and lots.
6. I click marker number X 
  6.1. An infoWindow pops up.
7. I click marker number Y 
  7.1. The infoWindow is closed. (.close())
  7.2. Its content and position is changed
  7.3. It is opened on the new position (.open(map,marker))
  7.4. Also Marker number X is removed.

亲自尝试: http://dl.dropbox.com/u/6084360/test/index.html

为什么是步骤7.4。发生了什么?发生之后我可以点击标记然而我觉得没有任何消失。的 WHY吗

我曾尝试通过谷歌浏览器进行一些调试,但在我执行 7.3 后,它会将我带入一些缩小的代码,然后迷路了。

这是删除标记的行。我不知道它为什么会删除它或如何知道从哪里开始。

R.addDomListenerOnce=function(a,b,c,d){var e=R[yc](a,b,function(){e[wb]();return c[Cc](this,arguments)},d);return e};R.R=function(a,b,c,d){c=cf(c,d);return R[yc](a,b,c)};function cf(a,b){return function(c){return b[oc](a,c,this)}}R.bind=function(a,b,c,d){return R[G](a,b,P(c,d))};R.addListenerOnce=function(a,b,c){var d=R[G](a,b,function(){d[wb]();return c[Cc](this,arguments)});return d};R.forward=function(a,b,c){return R[G](a,b,df(b,c))};R.ua=function(a,b,c,d){return R[yc](a,b,df(b,c,!d))};

我的代码:

    var times = 0;
    var treasureLocation = new google.maps.LatLng(62.05350309096103, 15.373047874999997);
    var map, infoBubble = null;

    function initialize() 
    {   
        // Create the actual map.
        map = new google.maps.Map(document.getElementById("map_canvas"), 
            {
              zoom:         4,
              center:       new google.maps.LatLng(62.05350309096103, 15.373047874999997),
              mapTypeId:    google.maps.MapTypeId.ROADMAP
            }
        );

        infoBubble = new InfoBubble({
            disableAutoPan: true
        });

        // Add an eventlistener to the map.
        google.maps.event.addListener
        (
            map, 
            'click', 
            function(ev)
            {
                addMarker(ev);
            }
        );              
    }

    function addMarker(ev)
    {
        // Get the distance.
        var distance = getDistance( ev.latLng , treasureLocation );

        // Skriv ut vart man klickade.
        document.getElementById("click_info").innerHTML = "Du klickade " + distance + " ifrån skatten, försök igen!";

        // Create a marker
        var marker = new google.maps.Marker({
            position:   ev.latLng,
            map:        map,
            clickable:  true,
            title:      "Härifån är det bara " + distance + " till skatten!",
            icon:       "shovel.png"
        });

        // Hook the click on the created marker to show the created popup
        google.maps.event.addListener
        (
            marker,
            'click',
            function(ev)
            {
                if( infoBubble != null ){infoBubble.close();}
                infoBubble.setContent(marker.title);
                infoBubble.setPosition(marker.position);
                infoBubble.open(map, marker);
            }
        );

    }

1 个答案:

答案 0 :(得分:1)

我无法解释原因,但似乎infoBubble.setPosition(marker.position);造成了麻烦。只需删除它。您正在使用infoBubble.open(map, marker);来定义气泡位置,因此您并不需要它。