我遇到了一个我无法弄清楚的问题.我接手了一个使用谷歌地图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&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)