Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Google Map Form Type Bundle Laravel Package

yappabe/google-map-form-type-bundle

A Symfony bundle that adds a Google Maps form type for visually selecting locations. Embed an interactive map in forms so users can pick a point and submit latitude/longitude coordinates without manual entry, simplifying location-based form inputs.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This is the first and most important finding: the package is not a Laravel package. It is a Symfony bundle (yappabe/OhGoogleMapFormTypeBundle) that registers a FormType (OhGoogleMapFormType) and an associated Twig template/JS asset to render a Google Map widget for capturing latitude/longitude. It assumes the Symfony Form component, a service container configured via DependencyInjection/Extension, and Symfony's asset pipeline. In a Laravel application there is no native path to consume it — installing it via Composer succeeds, but the bundle will never boot, and the FormType is incompatible with Laravel's Illuminate\Validation/FormRequest flow. The genuine architectural value is the pattern (a coordinate-picker field bound to a lat/lng pair), not the code.

Integration feasibility. Low as a dependency, high as an implementation reference. The package is small and readable — a handful of PHP classes and a JS snippet — so a TPM can reasonably scope "read it, reproduce it natively" rather than "integrate it." Concretely, in Laravel that means a Blade component (or a Filament/livewire field) wrapping the Google Maps JS API, plus two form inputs (latitude, longitude) validated with between:-90,90 and between:-180,180. The map widget itself is the only non-trivial part. Note also that the bundled JS targets a 2018-era Maps JS API surface; the click-to-place-marker and drag-pin behavior it implements is still available today but the API-key configuration, referrer restrictions, billing project setup, and the retirement of google.maps.Marker in favor of AdvancedMarkerElement all mean the shipped asset should not be reused verbatim.

Technical risk. High, but bounded. The archive status (last release July 2018, explicitly archived) means: no security patches, no PHP 8.x/8.1+ compatibility verification, no Google Maps API deprecation coverage, and no upstream issue triage. With 2 stars and 0 dependents, there is effectively no community to signal whether it works with any current stack, and no ecosystem to inherit fixes from. The blast radius is contained because the package is small and front-end-scoped — a failure in the map widget degrades a single field, not the application — but relying on an unmaintained Google Maps integration carries a silent-failure risk: the field can render as an empty grey box while form submission still succeeds with null coordinates, which is precisely the class of bug users don't report.

Key questions. (1) Is the target application actually Laravel, or is this an evaluation against the wrong ecosystem? Confirm before any further effort. (2) What is the business need — free-form lat/lng entry, an address-to-coordinate geocoder, or a map-based polygon/boundary picker? The first is a two-input problem the package does not meaningfully improve on; the latter two are out of scope for it. (3) Who owns the Google Maps API key, billing project, and quota? (4) Is re-implementation acceptable? Given the above, it almost certainly has to be.

Integration Approach

Stack fit. Poor as a unit, useful as a template. The package's conceptual shape — a form field type that pairs a rendered map with two numeric inputs, exposing the values back to the form model — maps cleanly onto Laravel primitives, but none of the concrete Symfony glue does. Treat the repository as a ~200-line specification.

Migration path. Do not composer require it. Instead: extract the FormType's validation constraints, the Twig template's DOM structure, and the JS file's marker-placement logic; then rebuild as (a) a Blade partial responsible for the map container and the two inputs, (b) a small vanilla JS or Alpine.js module that initializes the map with a default center, binds a click handler that both places/moves the marker and writes values into the inputs, and syncs the marker on input events so manual coordinate entry stays consistent, and (c) a FormRequest with required|numeric|between rules plus a custom rule for paired completeness (both or neither). If the team uses Filament or a similar admin framework, prefer its native map field over a homegrown one.

Compatibility. The original code is PHP 7-era and predates the Maps JS API's mandatory API-key requirement, the AdvancedMarkerElement migration, and any GDPR/consent handling for Google-hosted assets. Any rebuild must decide these explicitly: which Maps JS API version to pin, whether to lazy-load the script only when the field is visible (recommended, for both performance and consent), and whether a self-hosted or Mapbox/Leaflet fallback is preferable to avoid a third-party billing dependency entirely. For a coordinate picker alone, Leaflet + OpenStreetMap is a credible zero-cost substitute and removes the API-key negotiation from the roadmap.

Sequencing. Week one: confirm the framework question and the actual product requirement; if it is Laravel, formally retire the "integrate this package" track and record it as "pattern reference." Week two: prototype the Blade + JS field against a real form; validate that geocoding (if needed) is handled separately via a server-side call to a geocoding API rather than the deprecated client-side Geocoder service. Week three: harden — input validation, marker/input sync, API-key restriction by HTTP referrer, error state when the maps script fails to load. Ship behind a feature flag if the field appears in a high-traffic form.

Operational Impact

Maintenance. Zero upstream maintenance and none expected — the repository is archived. Everything you ship is yours to own in perpetuity, including any Google Maps API surface change. Budget this as an in-house component, not a dependency: the true cost is not the initial build (small) but the recurring cost of tracking Maps JS API changes on a component no one is actively watching.

Support. No vendor, no maintainer, no issue queue to escalate to. Internal support burden is limited by the component's small surface, but it concentrates entirely on whoever wrote it. Document the API-key ownership, the billing account, and the escalation path for "map won't load" — that failure will happen, and its cause (quota exhaustion, key restriction misconfiguration, consent-blocked script, or API deprecation) is not obvious to a front-line support agent.

Scaling. Two distinct concerns. The front-end cost is per-page-view: every form render that loads the Maps JS API incurs a billable Dynamic Maps load, so a high-volume public form will generate real and possibly surprising spend — this is the single most under-appreciated operational risk here and is invisible in the package's design. The back-end cost is negligible; the package stores two decimals. Mitigate by lazy-loading the map behind a user action ("pick on map" button) so the API load only occurs for users who want it, and by setting budget alerts and per-key quotas in GCP.

Failure modes. (1) Silent null coordinates — map fails, user submits, record saves with no location; requires server-side validation that the pair is present and plausible. (2) Quota/billing suspension — maps render blank for everyone at once; a hard dependency on a third-party paid service for a core form field. (3) API deprecation — the 2018 asset uses constructs Google has since replaced; a rebuild should pin and monitor. (4) Key leakage/abuse — an unrestricted key gets scraped and billed to you; enforce HTTP-referrer and API restrictions. (5) Coordinate/input desync — user types a value, marker stays put, submitted data contradicts the visual; fix with two-way binding. (6) Consent/GDPR — Google Maps sets third-party cookies; in EU-facing products this needs gating, and an unmaintained 2018 bundle will not help you there.

Ramp-up. Trivial in absolute terms — the package is small, the pattern is well understood, and any mid-level Laravel developer can reproduce it in a few days. The ramp-up that actually matters is organizational: convincing stakeholders that "we found a package" is not the same as "we have a supported solution," and that the correct deliverable is a small in-house component with a named owner rather than a two-star dependency. Frame the recommendation accordingly — not "this package is bad," but "this requirement is a two-day build, and here is what owning it costs per year."

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels