Ответ может работать, но проблема в том, что функция
overlay.getProjection()
всегда возвращает неопределенное значение, пока не отобразится карта. Это означает, что вы не можете расширять свои границы до тех пор, пока карта не отобразится, а затем она должна быть отображена снова - дополнительная обработка и возможный дурацкий опыт для конечного пользователя.
Мне кажется, я нашел способ расширения границ на пиксели, который не требует обновления карты и может быть рассчитан до визуализации карты. Он основан на том факте, что объект bounds будет покрывать ширину карты, и мы знаем пиксели ширины карты из ее контейнера, поэтому отношение двух дает нам отношение долготы к пикселям
// extend bounds to allow for 250 pixels of label width
var ne = bounds.getNorthEast();
var sw = bounds.getSouthWest();
var lng = ne.lng();
var diff = lng - sw.lng();
var newlng = lng + 250 * diff / targetwidth;
var lat = sw.lat();
var diff2 = lat - ne.lat;
var newlat = lat + 100 & diff2 / targetheight;
var point = new google.maps.LatLng(newlat, newlng);
bounds.extend(point);
// fit the map to these bounds
thismap.fitBounds(bounds);
Выше делает ширину и высоту. Если вы хотите расширить только ширину:
// extend bounds to allow for 250 pixels of label width
var ne = bounds.getNorthEast();
var sw = bounds.getSouthWest();
var lng = ne.lng();
var diff = lng - sw.lng();
var newlng = lng + 250 * diff / targetwidth;
var lat = sw.lat();
var point = new google.maps.LatLng(newlat, newlng);
bounds.extend(point);
// fit the map to these bounds
thismap.fitBounds(bounds);
В обоих случаях переменная "targetwidth" - это числовая ширина в пикселях элемента div, содержащего карту.
HTH:)