mkebza/google-maps-bundle
A Symfony bundle for adding Google Maps to your app with minimal setup. Configure API keys, render maps, and manage markers from a simple, Composer-installable package. Useful for location pickers, store locators, and custom map views in existing Symfony projects.
Architecture fit — poor. The package is a Symfony bundle, not a Laravel package. It will be structured around Bundle subclasses, DependencyInjection/*Extension.php, service definitions in YAML/XML, and likely compiler passes. Laravel has no bundle loader; it resolves services through ServiceProvider, Facade, and config/*.php publishing. There is no shared extension point, so "install and go" is not achievable. At best, the underlying Google Maps client/service classes are plain PHP and can be lifted out; the Symfony wiring is dead weight.
Integration feasibility — feasible only as source material. The realistic path is a read-and-extract exercise: identify whether the bundle wraps HTTP calls (Geocoding, Places, Directions, Distance Matrix) or emits front-end JavaScript. HTTP-wrapper logic is portable in hours; JS/asset/templating helpers would be near-worthless under Blade + Vite. Anything that depends on Symfony's HttpClient, OptionsResolver, or event dispatcher needs rework against Laravel's HTTP client and config().
Technical risk — high.
symfony/* to ^3.x/^4.x. Modern Laravel (10/11) pins Symfony 6/7 components. Composer will refuse to resolve, or will downgrade the framework — a hard stop, not a warning.mcrypt/each()) against PHP 8.2+; Guzzle 5/6 vs Guzzle 7.Key questions.
Stack fit — none native. Treat this as a reference implementation, not a dependency. Do not add it to composer.json; the Symfony constraint graph alone makes it a net-negative.
Migration path (recommended: extract, don't install).
app/Services/GoogleMaps/ behind an interface, using Laravel's Http client with retry/timeout and a config-driven API key.GoogleMapsServiceProvider, expose a facade if ergonomics warrant it, publish config/google-maps.php.Compatibility work required.
OptionsResolver with explicit validation or Laravel validation rules.Sequencing.
Preferred alternative: evaluate a maintained, framework-agnostic PHP Google Maps client and wrap it in a thin Laravel service provider. That preserves the same integration shape with an actual upstream maintainer.
Maintenance — you own it entirely. There is no realistic upstream to consume patches from; a 2018 single-maintainer bundle with 1 star is effectively a code sample. Budget for first-party ownership from day one, including PHP 8.x compatibility and Google API deprecation churn. If the extraction is small (likely), this is cheap; if it is large, kill the effort early.
Support — none. No issue triage, no CVE process, no version compatibility guarantees. Any production incident routes to your team. This should be stated explicitly in the risk register rather than assumed.
Scaling — dominated by Google's quota and billing model, not the code. Expect: per-key quota ceilings, per-request billing across Geocoding/Places/Directions, and hard failure once quota is exhausted. Required mitigations: persistent caching of geocode results (the highest-leverage cost control), request batching where the API supports it, exponential backoff on OVER_QUERY_LIMIT/RESOURCE_EXHAUSTED, and per-environment API keys with tight HTTP referrer/IP restrictions.
Failure modes.
Ramp-up — low effort, low signal. A mid-level engineer can audit and port the useful logic in under a week. The risk is not the learning curve but the false confidence of a "working" install that masks stale API assumptions. Run the extraction spike, record actual endpoint behavior, and make the adopt/build decision on evidence rather than the opportunity score.
TPM recommendation: do not adopt as a dependency. Use as a reference implementation for a 3–5 day extraction spike; if the surface is thin, build a first-party Laravel service provider over a maintained HTTP client and own it. The 9.65 opportunity score is a market signal about the missing well-maintained Laravel-native option — it is not a signal about this package's readiness.
How can I help you explore Laravel packages today?