我正在显示一张Google地图,其中包含我已存储在数组中的一组固定标记。显示的特定标记取决于用户选择的日期。选择日期后,我会显示相应的标记,并更新每个标记的信息窗口,以查看该位置的事件。
我遇到的问题如下。有两个标记相对靠近,称为M1和M2。我选择了一个应该显示M2的日期,一切都按预期工作。显示正确的标记,并在信息窗口中显示正确的信息。然后我选择一个应该显示M1的日期。
单步执行代码表示显示了适当的标记(M1)。但是,信息窗口仍显示上次显示的M2信息。
奇怪的是,如果我放大以聚焦标记所在的区域,然后单击标记以显示信息窗口,将显示M1的相应信息。如果我缩小,则会显示M2的信息。
如果我重复上面的初始步骤并且地图已经放大,则信息窗口始终会显示相应的信息。
没有向zoom事件注册处理程序,并且所有标记都已初始化,并且optimize属性设置为false。
我不知道为什么会发生这种情况。有什么想法吗?
class ottb.Map
constructor: () ->
@map = new google.maps.Map(document.getElementById("schedule-map"), gMapOptions)
@gameMarkers = {}
@displayedGames = {}
@lastInfoWindow = null
# Updates the map to show the games for the currently selected date.
displayGames: (newGames) ->
@lastInfoWindow.close() if @lastInfoWindow isnt null
# Fade out currently displayed games if they are not in the new list of
# games to display
for own teamAbbr, displayedGame of @displayedGames
hasIt = newGames.some( (newGame) -> newGame.home_team_abbr == displayedGame.home_team_abbr)
if not hasIt
@fadeOutMarker(@gameMarkers[displayedGame.home_team_abbr])
delete @displayedGames[displayedGame.home_team_abbr]
for newGame in newGames
do (newGame) =>
marker = @gameMarkers[newGame.home_team_abbr]
if not marker?
marker = new google.maps.Marker
position: new google.maps.LatLng(parseFloat(newGame.lat), parseFloat(newGame.lon))
map: @map
opacity: 0
opacities: []
marker.setTitle(newGame.away_team_name + ' @ ' + newGame.home_team_name)
hasIt = @displayedGames[newGame.home_team_abbr]?
@fadeInMarker(marker, 0) if not hasIt
source = $("#info-window").html()
template = Handlebars.compile(source)
context =
game_id: newGame.id,
away_team: newGame.away_team_abbr,
home_team: newGame.home_team_abbr,
game_time: newGame.game_time
displaySelectGameLink: true
google.maps.event.addListener(marker, 'click', =>
@lastInfoWindow.close() if @lastInfoWindow isnt null
@lastInfoWindow = new google.maps.InfoWindow()
@lastInfoWindow.setContent(template(context))
@lastInfoWindow.open(that.map, marker)
return false)
@gameMarkers[newGame.home_team_abbr] = marker
@displayedGames[newGame.home_team_abbr] = newGame
答案 0 :(得分:1)
在原帖中我的第3次评论后,我头上的灯泡熄灭了。我正在淡入/淡出地图中的标记,并且从未将它们从地图中取出。 M2的不透明度为0,但其z-index必须高于M1,所以我仍然点击它。当我放大时,它们相距足够远,以至于它们不再重叠。
其中一天......(实际上是两天)。对不起,当我把头撞到墙上时。