小编Bri*_*ams的帖子

在google Maps InfoBox中使用但不是infoWindow时,jquery单击处理程序多次调用

我遇到了一个我无法弄清楚的问题.我接手了一个使用谷歌地图API版本3的应用程序.我对它并不熟悉,但我被要求调整一些事情.其中一个需要创建自定义infoBubbles而不是使用默认的infoWindow,以便我们可以设置好它们.我发现了一个名为infoBox的类,它将执行此操作并按照一些示例来获取我现在所处的位置.但是,我的应用程序要求每个叠加(多边形,折线或标记)在infoBox上都有一个删除按钮.当我们使用默认的infoWindow时,删除工作正常,jQuery点击事件,但现在我使用的是infoBox非常奇怪.我创建了一个小的测试文件来演示这个问题.它的要点是,第一次打开infoBox时,删除按钮例程只运行一次.但是一旦你关闭盒子并再次打开它(或者不同的盒子),例程就会多次运行.打开infoBoxes的次数越多,删除按钮重新绑定并反过来执行的次数就越多.我有东西包含在infoBox的domready监听器中,这样我就可以将窗口中的元素更改为特定于被单击的对象的属性.由于某种原因,domready多次触发(我认为它只会触发一次)并且我的删除点击再次被绑定.在使用infoBox类之前,常规的infoWindow不需要domready来使用jQuery来更改标题和描述,并且click事件从未被反复绑定.我完全失去了,并且花了太多时间在这上面.任何帮助,将不胜感激.示例测试文件如下:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?v=3&amp;sensor=false"></script>
<script type="text/javascript" src="infobox.js"></script>
<script type="text/javascript" src="jquery-1.9.0.min.js"></script>
 <script type="text/javascript">
  //global variables for the info box an for the map
  var ib = null;
  var theMap = null;
  var myOptions = null;
  var iw = null;


    function initialize() {

    //regular google maps setup crap, not important
    //
        var secheltLoc = new google.maps.LatLng(49.47216, -123.76307);

        var myMapOptions = {
             zoom: 7
            ,center: secheltLoc
            ,mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        theMap = new google.maps.Map(document.getElementById("map_canvas"), myMapOptions);


        var marker = new google.maps.Marker({ …
Run Code Online (Sandbox Code Playgroud)

jquery google-maps infobox

4
推荐指数
1
解决办法
1309
查看次数

标签 统计

google-maps ×1

infobox ×1

jquery ×1