Product Craft Bible
Map picker
Inicio Media y Archivos Map picker
Media y Archivos

Map picker

8 reglas Mapbox Address Autofill (dato de vendor) · Geoapify Leaflet location pickerGoogle Maps Platform draggable markers · Geoapify (umbral 50 m / campo distance)Chris Wilson, Chrome Dev Summit 2017 (vía adamlynch.com) · MDN Geolocation APIGoogle Maps Platform draggable markers (dragend, title attr) · Geoapify (38x56 px, onIdle)
96

Map picker

8 reglas
823

Combina autocompletado de dirección con ajuste fino del pin

El flujo óptimo de captura de ubicación usa dos capas secuenciales: primero un campo de texto con autocompletado para velocidad y validación, luego un pin arrastrable en el mapa para precisión de último metro. El usuario suele saber su calle pero no puede describir donde esta exactamente la entrada, sobre todo en edificios grandes o zonas sin nomenclatura formal. Separar texto y mapa en pasos explicitos reduce errores de entrega. Mapbox reporta que su autocompletado baja la captura a unas 10 pulsaciones frente a unas 35 en formularios tradicionales (dato auto-reportado de Mapbox sobre su propio producto).

Mapbox Address Autofill (dato de vendor) · Geoapify Leaflet location picker
Preferir
Av. Reforma 222, Col. Juárez
Av. Reforma 222, Col. Juárez, CDMX
Av. Reforma 222, Lomas, CDMX
Evitar
Calle
Número
Colonia
Código postal
824

Confirma la dirección en texto tras mover el pin

Cada vez que el usuario mueve el pin (arrastrandolo o por geolocalización), ejecuta reverse geocoding y muestra la dirección legible en texto visible, no solo las coordenadas. Así el usuario verifica que el pin cayo en el lugar correcto antes de confirmar; sin esa confirmación textual no puede detectar errores de precisión del geocodificador. Guarda ambos: coordenadas (lat/lon) para routing y la dirección estructurada para display. Si el pin cae a más de unos 50 m de cualquier dirección validada, conserva el texto previo y actualiza solo coordenadas para evitar que el campo "salte" a una calle equivocada.

Google Maps Platform draggable markers · Geoapify (umbral 50 m / campo distance)
Preferir
Tu ubicación
Av. Reforma 222, Col. Juárez, CDMX
Evitar
lat: 19.4284, lon: -99.1277
825

Pide geolocalización en contexto, no al cargar la página

Solicita el permiso de geolocalización solo cuando el usuario hace una acción que lo requiere (un botón "Usar mi ubicación"), nunca de forma automática al cargar. Una solicitud sin contexto se rechaza con mucha más frecuencia y puede bloquearse de forma permanente, eliminando la posibilidad de recuperarse. Más del 90% de las solicitudes de permisos en Chrome para Android fueron infructuosas cuando se pidieron sin contexto (Chris Wilson, Chrome Dev Summit 2017). Muestra primero una explicación HTML del beneficio y dispara el prompt nativo solo si el usuario confirma; las solicitudes sin contexto se conceden hasta un 40% menos y un 75% de usuarios son más propensos a activar la localización si entienden el beneficio (criterio: fuentes secundarias).

Chris Wilson, Chrome Dev Summit 2017 (vía adamlynch.com) · MDN Geolocation API
Preferir
Centrar el mapa en tu dirección
Usaremos tu GPS para colocar el pin en tu ubicación exacta. Puedes ajustarlo después.
Evitar
example.com quiere conocer tu ubicación
BloquearPermitir
826

Da feedback visual claro durante y después del arrastre del pin

Un pin arrastrable sin feedback de estado (cursor de agarre, sombra de elevación, animación de caida) deja al usuario sin saber si la acción se registro. Durante el arrastre el pin debe "levantarse" del mapa con cursor grabbing y sombra; al soltarse debe "caer" con confirmación textual inmediata. Ejecuta el reverse geocoding en el evento de mapa detenido (dragend u onIdle), no en cada píxel movido, para evitar llamadas y costos excesivos. El área interactiva del marker (en producción suele rondar 38x56 px, anclada en la base) debe ser suficiente para selección tactil sin errores.

Google Maps Platform draggable markers (dragend, title attr) · Geoapify (38x56 px, onIdle)
Preferir
Ubicación actualizada · Av. Insurgentes 2453
Evitar
827

Ajusta el nivel de precisión al contexto: entrega exacta vs. zona aproximada

No todos los casos requieren precisión de número de puerta. Un picker de delivery necesita coordenadas exactas a nivel de edificio o unidad, mientras que un picker de zona de cobertura o "cerca de mi" puede operar con precisión de barrio o ciudad. Exponer más precisión de la necesaria aumenta fricción; exponer menos genera errores de entrega. Declara el nivel de precisión en la UI y en los parámetros de API: para delivery, haz zoom automático a nivel de calle al confirmar (criterio); para busqueda por zona, basta geolocalización por IP (~5-50 km, silenciosa, sin permiso) frente al GPS con alta precisión (~5-50 m, requiere permiso).

Mapbox Geocoding v6 (geocodificación a nivel de unidad) · Geoapify (IP vs GPS, enableHighAccuracy)
Preferir
Delivery · nivel edificio
Zoom 16+ · campo "Número interior / referencias"
Busqueda · nivel zona
Precisión de barrio, sin pedir permiso de GPS
Evitar
Restaurantes cerca de ti
Arrastra el pin al número exacto de tu puerta para ver resultados.
828

Comunica zonas fuera de cobertura antes de completar el flujo

Cuando el pin o la dirección cae fuera del área de servicio, notificalo de inmediato, no al final del checkout. La señal debe ser proactiva: el mapa indica visualmente que zonas están habilitadas (overlay translucido) en vez de reactiva (un error al confirmar). El pin sobre zona deshabilitada debe verse atenuado y mostrar un mensaje contextual al soltarse. Ofrece la alternativa más cercana o captura el email para avisar cuando se expanda la cobertura, en lugar de dejar que el usuario llene todos los datos de entrega para descubrir al pagar que no llegas.

Map UI Patterns (Spatial Filter) · NN/g Maps & Location Finders (criterio)
Preferir
Sin cobertura aquí · recibir aviso cuando lleguemos
Evitar
No realizamos envíos a esta dirección
Paso 4 de 4 · Pago, tras llenar todos los datos de entrega
829

Ofrece siempre entrada de dirección manual como alternativa al mapa

El mapa interactivo es el camino óptimo para la mayoría, pero no para todos: usuarios con discapacidad visual, conexiones lentas, o que conocen su dirección exacta necesitan un fallback de texto completo que no requiera interactuar con el gráfico. NN/g recomienda que en location finders móviles la vista por defecto sea de lista, no de mapa. MDN documenta como fallback obligatorio ante denegación de permiso la entrada manual, la ubicación por IP o servicios de terceros. La alternativa no debe estar enterrada en un link diminuto: visible junto al mapa, con la misma confirmación que el flujo gráfico.

NN/g Maps & Location Finders · MDN Geolocation API (fallbacks) · WCAG 2.1 SC 2.4.8
Preferir
o ingresa la dirección manualmente
Calle y número
Colonia
C.P.
Referencias
Evitar
830

Carga el mapa de forma diferida; no es LCP critico

Los iframes y scripts de mapas son componentes pesados que no deben bloquear el render inicial. Los embeds pueden incluir más de 100KB de JavaScript y en algunos casos hasta 2MB (web.dev), y el mapa rara vez es el Largest Contentful Paint: el formulario o el CTA lo preceden en importancia. Usa el patrón de facade: una imagen estática del mapa como placeholder que se reemplaza por el mapa interactivo real solo al primer hover o clic. El atributo loading="lazy" en iframes no basta porque el browser aún los descarga temprano; en hover haz preconnect al proveedor y en clic monta el embed real.

web.dev Embed best practices (facade) · NN/g Maps & Location Finders
Preferir
facade · imagen estática
Seleccionar en mapa
Evitar
<iframe src="maps.google.com/...">
> 100KB a 2MB de JS bloquean el render
TTI sube · LCP se retrasa