这是我用来显示标记和infoWindows的代码。它工作得很好。
mapOptions = {
zoom: zoom,
center: getMyCompanyCoordinates,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map($(this)[0], mapOptions)
infowindow = new google.maps.InfoWindow()
createMarker = (company)->
marker = new google.maps.Marker({
position: new google.maps.LatLng(company.latitude, company.longitude),
map: map
})
google.maps.event.addListener(marker, 'click', ()->
infowindow.setContent('content')
infowindow.open(map,this)
)
return marker
firstCompanyMarker = createMarker(companiesData[0])
createMarker(companiesData[i]) for i in [1..companiesData.length-1] by 1
google.maps.event.trigger(firstCompanyMarker, 'click')
然而,有一个问题。默认(firstCompanyMarker)标记的infoWindow没有显示我需要的。它正越过地图的顶部边缘。
我试图移动中心,但没有结果。
lat += 100 #or lat -=100. Anyway it does NOT work
long += 100 # it does work but it's moving the center
#of the map to the left or the right and it's not what I need
mapOptions = {
zoom: zoom,
center: new google.maps.LatLng(lat, long),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
你的想法?如何让infoWindow显示在地图的中心并且不会越过它的顶部边缘?
答案 0 :(得分:1)
在“infowindow.setContent('content')”
之后添加以下行map.setCenter(marker.lat-100, marker.lng-100);
但是,这不是一个真正的解决方案。根据经验,我可以告诉你,你的地图对标准信息很少。你有两个选择来解决这个问题:
1)增加地图的大小,以便默认的信息窗显示地图中心的标记或
2)使用自定义infowindow并使其比默认的
小很多希望有所帮助!
答案 1 :(得分:0)
map.setCenter(marker.lat, marker.lng- (popup.getheight/2));
这应该有用。
答案 2 :(得分:0)
为了任何人磕磕绊绊地回答这个问题。我有同样的问题,并注意到如果我关闭infoWindow并单击标记,infoWindow将打开并平移到正确的位置。而不是触发点击,在打开初始infoWindow之前等待tilesloaded
事件是关键。
// Trigger click after tiles are loaded so auto-pan positions infoWindow correctly
google.maps.event.addListenerOnce( map, 'tilesloaded', function () {
infoWindow.open( map, marker );
} );