我正在尝试将旧映射中的一些代码合并到一个新映射中,并且我收到错误“Uncaught TypeError:无法设置未定义的属性'infoWindow'”引用此行
polygon.infoWindow = new google.maps.InfoWindow({content: html});
从下面的这个片段。我在脚本的顶部定义了infoWindow,但为了简洁起见,没有包含它。
geoXml.parseKmlString("<Placemark><name>"+name+"</name>"+kml+"</Placemark>");
var html = "<strong>" + event + "</strong><br>Issued For: " + area + "<br>Expires: " +dtstring;
var polygon = geoXml.docs[0].gpolygons[0];
polygon.infoWindow = new google.maps.InfoWindow({content: html});
google.maps.event.addListener(polygon, 'mouseover', function(e) {
var latLng = e.latLng;
this.setOptions({fillOpacity:0.80});
polygon.infoWindow.setPosition(latLng);
polygon.infoWindow.open(map);
});
答案 0 :(得分:1)
如果你看my example(看起来像你的代码来自哪里),你会看到同样的错误(我已经修复了这个例子)。当查询返回的FusionTable中的条目不包含多边形时,会发生这种情况。我的例子中的条目是:
活动:特殊天气声明,截止日期:2013-05-02T18:00:00-06:00
如果没有多边形,你可以防御性编码以不创建infowindow:
<asp:DropDownList ID="AttendStatusAllDropDownList" runat="server">
<asp:ListItem Value="" Text=""></asp:ListItem>
<asp:ListItem Value="TM005" Text="Time Missed 005 Min"></asp:ListItem>
<asp:ListItem Value="TM010" Text="Time Missed 010 Min"></asp:ListItem>
<asp:ListItem Value="TM015" Text="Time Missed 015 Min"></asp:ListItem>
<asp:ListItem Value="TM030" Text="Time Missed 030 Min"></asp:ListItem>
<asp:ListItem Value="TM045" Text="Time Missed 045 Min"></asp:ListItem>
</asp:DropDownList>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="ApplyToAllButton_Click" CausesValidation="false" />
<br />
<br />
<asp:Repeater ID="AttendanceRepeater" runat="server">
<ItemTemplate>
<asp:DropDownList ID="AttendStatusDropDownList" runat="server">
<asp:ListItem Value="" Text=""></asp:ListItem>
<asp:ListItem Value="TM005" Text="Time Missed 005 Min"></asp:ListItem>
<asp:ListItem Value="TM010" Text="Time Missed 010 Min"></asp:ListItem>
<asp:ListItem Value="TM015" Text="Time Missed 015 Min"></asp:ListItem>
<asp:ListItem Value="TM030" Text="Time Missed 030 Min"></asp:ListItem>
<asp:ListItem Value="TM045" Text="Time Missed 045 Min"></asp:ListItem>
</asp:DropDownList><br />
</ItemTemplate>
</asp:Repeater>