public static function getBoundsFromCenterAndZoom(LatLng $center, $zoom, $width, $height = null)
    {
        if (is_null($height)) {
            $height = $width;
        }

        $centerLat = $center->getLat();
        $centerLng = $center->getLng();

        $pix = LatLng::latToPixels($centerLat, $zoom);
        $neLat = LatLng::pixelsToLat($pix - round(($height - 1) / 2), $zoom);
        $swLat = LatLng::pixelsToLat($pix + round(($height - 1) / 2), $zoom);

        $pix = LatLng::lngToPixels($centerLng, $zoom);
        $swLng = LatLng::pixelsToLng($pix - round(($width - 1) / 2), $zoom);
        $neLng = LatLng::pixelsToLng($pix + round(($width - 1) / 2), $zoom);

        return new self([
            'southWest' => new LatLng(['lat' => $swLat, 'lng' => $swLng]),
            'northEast' => new LatLng(['lat' => $neLat, 'lng' => $neLng])
        ]);
    }