infoWindow未显示在地图的中心

时间:2012-08-25 08:37:43

标签: google-maps-api-3 google-maps-markers

这是我用来显示标记和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显示在地图的中心并且不会越过它的顶部边缘?

enter image description here

3 个答案:

答案 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 );
} );