lendable/google-map-bundle
A Symfony bundle that integrates Google Maps into your application, providing services and Twig helpers to render maps, configure markers, and manage API settings from a central configuration.
Architecture fit — poor, and the mismatch is structural rather than cosmetic. Despite being filed under a PHP/Laravel package listing, lendable/google-map-bundle is a Symfony2 bundle: its public surface is a Bundle subclass plus a DI extension, a compiler pass, and Twig templates. Laravel has no bundle registration, compiler passes, or services.yml semantics, so none of the package's entry points can be invoked from a Laravel app. The actual domain logic lives in the upstream egeloen/ivory-google-map library, which is framework-agnostic — the bundle is only glue. That means the adoptable artifact is the library, not the package we are evaluating, and the library is itself abandoned.
Integration feasibility — feasible only as a fork-and-strip exercise. A Laravel integration would require: composer-installing (or vendoring) the underlying map library, replacing Symfony's container/config with a Laravel service provider and a published config file, and replacing the Twig templates with a Blade component or a JSON payload consumed by a JS component. The value delivered is a fluent PHP builder that serializes a map definition into HTML/JS — roughly a few hundred lines of value objects (Map, Marker, InfoWindow, Coordinate, Encoder). We would be paying integration cost for a thin serialization layer.
Technical risk — high and compounding.
symfony/* constraints will conflict with the Symfony 6/7 components shipped inside Laravel 10/11. Expect composer resolution failure and a required replace/fork with widened constraints.each(), dynamic properties, non-nullable implicit conversions) that surface as fatals at runtime, not at install time.Key questions for the requesting team
Recommendation: do not adopt as a dependency. Use it as a reference implementation for the object model, and build the ~200-line Blade/JS component in-house if server-side map composition is genuinely required.
Stack fit. The bundle's stated target (Symfony2) and our target (Laravel) share only the PHP language. The realistic fit is architectural pattern reuse, not package reuse: the Ivory builder API is a reasonable prior art for how to model map layers, markers, and encoders.
Migration path (if we proceed)
egeloen/ivory-google-map into app/Support/Map/ (or a private composer path repo) so we control PHP-version compatibility and can delete Symfony-only code paths.GoogleMapServiceProvider registering the builder as a singleton, plus a config/google-map.php holding the API key, default center/zoom, and map ID.<x-google-map :config="$map" /> component that emits a container div and an inline JSON config block; all rendering moves to a small vanilla-JS or Alpine wrapper against the current Maps JS API.Compatibility gates (spike before committing)
composer require the upstream library against our PHP/Laravel matrix; record the exact failure mode.mapId for vector maps, marker API — google.maps.Marker is itself deprecated in favor of AdvancedMarkerElement).Sequencing. Two-day timeboxed spike → go/no-go. The fallback (build the component in-house against a GeoJSON contract) should be scoped in parallel, because it is very likely to be the cheaper path and it removes the abandoned-dependency exposure entirely.
Maintenance. Full ownership transfer to us. The repo is archived — upstream will not accept PRs, cut releases, or patch CVEs. Every future PHP upgrade, Laravel upgrade, or Google API change is an internal ticket. There is no version to pin to; we pin to a commit hash and inherit the burden of reading it.
Support. Zero stars and zero dependents means effectively zero external knowledge base: no StackOverflow answers, no blog posts, no maintainer to escalate to. Onboarding depends entirely on the sibling library's README, which is itself stale.
Scaling. Server-side cost is negligible — the library builds strings and arrays; it is not a runtime hotspot. The real scaling surface is client-side and commercial: Maps JS API loads are billed against our GCP project, with per-key quotas. We must treat the API key as a budgeted, monitored resource with HTTP-referrer restrictions and hard quota caps, otherwise a traffic spike becomes an invoice event. Any server-side geocoding should be cached aggressively.
Failure modes to instrument for
Ramp-up. Conceptually simple: a mid-level developer can absorb the object model in a day and complete a port in roughly one to two days, provided they are comfortable with the Maps JS API itself. The cost is not learning the library — it is the permanent tail of owning unmaintained code for a feature that has a well-supported, framework-native alternative.
How can I help you explore Laravel packages today?