私はいくつかのGoogleMapsAPI v3コードを書いています。これは複数のマーカーで問題なく機能するようですが、マーカーが1つしかない場合は、常にマップの左上の表示領域のすぐ先にマーカーをプロットします。
これが私のコーヒースクリプトコードです:
class SimpleMap
constructor: (div_id, lat = 40.783627, lng = -73.942583) ->
# L.Icon.Default.imagePath = "/assets"
@div_id = div_id
@map_options = {center: new google.maps.LatLng(lat, lng), zoom: 10, mapTypeId: google.maps.MapTypeId.ROADMAP}
@markers = []
@map = new google.maps.Map document.getElementById(div_id), @map_options
@loadMarkers() # gets them and plots on the map
@autoFit()
loadMarkers: ->
items = $(".grid-item[data-lat], .apartment[data-lat]")
for item in items
console.log "Adding #{item}"
@addMarker(item)
@autoFit()
addMarker: (item) ->
console.log "Adding marker"
lat = $(item).attr("data-lat")
lng = $(item).attr("data-lng")
console.log "#{lat}, #{lng}"
marker = new google.maps.Marker(
position: new google.maps.LatLng lat, lng
map: @map
title: "This is my marker"
)
@markers.push marker
autoFit: ->
bounds = new google.maps.LatLngBounds()
for marker in @markers
bounds.extend marker.getPosition()
@map.fitBounds bounds
# if you leave out the below, the marker appears int he same position as in the screenshot (slightly off screen) but at the max zoom level.
listener = google.maps.event.addListener(@map, "idle", =>
@map.setZoom 9 if @map.getZoom() > 8
@map.setCenter @markers[0].getPosition()
google.maps.event.removeListener listener
)
マップは私の設定の試みを無視しているようsetCenter(@markers[0].getPosition())
です。何か案は?