1

マーカーと 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')

ただし、問題が 1 つあります。デフォルト (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 を地図の中央に表示し、地図の上端を越えないようにするにはどうすればよいですか?

ここに画像の説明を入力

4

3 に答える 3

1

「infowindow.setContent('content')」の後に次の行を追加します。

map.setCenter(marker.lat-100, marker.lng-100);

ただし、これは本当の解決策ではありません。経験上、標準の情報ウィンドウのマップはほとんどないことがわかります。これを解決するには、実際には 2 つのオプションがあります。

1) マップのサイズを大きくして、デフォルトの情報ウィンドウが表示され、マーカーがマップの中央に表示されるようにします。

2) カスタム情報ウィンドウを使用し、デフォルトのものよりもかなり小さくします

それが役立つことを願っています!

于 2012-08-26T02:17:37.963 に答える
0

これにつまずいた人のために遅い答え。私は同じ問題を抱えていて、infoWindow を閉じてマーカーをクリックすると、infoWindow が開いて正しい位置にパンすることに気付きました。クリックをトリガーする代わりにtilesloaded、最初の infoWindow を開く前にイベントを待機することが重要でした。

// Trigger click after tiles are loaded so auto-pan positions infoWindow correctly
google.maps.event.addListenerOnce( map, 'tilesloaded', function () {
    infoWindow.open( map, marker );
} );
于 2015-11-18T20:16:09.947 に答える
0
map.setCenter(marker.lat, marker.lng- (popup.getheight/2));

これはうまくいくはずです。

于 2014-05-26T03:26:34.207 に答える