[Feature request]: Support custom marker icons (bitmap/URI) via icon field in MarkerOptions
Los mantenedores suelen responder en 5 días
@jokerttu ya está trabajando en esto.
Desde el 26/4/2026.
- #587 de @esannihith — cerrado sin fusionar
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Is there an existing issue for this?
- I have searched the existing issues
Use case
addMarker() via MapViewController only renders the default Google Maps pin regardless of what MarkerOptions is passed. There is no way to supply a custom image as the marker icon through the JS layer.
This is a blocking limitation for any app that needs to differentiate markers visually — the most common real-world case being live location sharing, where each member's marker should display their profile photo rather than an indistinguishable default pin.
Concrete scenario: In a group coordination app where 8 users share live location on the same NavigationView, all 8 markers render as identical red pins. There is no way to tell who is who without tapping each one individually. A custom avatar icon per member solves this entirely.
Alternatives considered:
Rendering an RN View as an overlay — Possible for static UI, but overlays are not anchored to map coordinates and don't move correctly with map pan/zoom/tilt. Not a real substitute for a native map marker.
react-native-maps — Supports custom marker icons but is a completely separate library. It cannot be used alongside @googlemaps/react-native-navigation-sdk on the same map surface, as both require owning the map view.
No existing package solves this within the Navigation SDK's MapViewController surface.
The underlying native SDKs fully support this — BitmapDescriptorFactory.fromBitmap() on Android and GMSMarker.icon on iOS. The gap is only in the React Native wrapper not exposing it.
Proposal
Add an optional icon field to MarkerOptions that accept a URI string pointing to a local asset or remote image, passed through the JS-to-native bridge and applied as the marker's bitmap icon on both Android and iOS.
Proposed TypeScript change:
export interface MarkerOptions {
position: LatLng;
title?: string;
snippet?: string;
isVisible?: boolean;
isFlat?: boolean;
isDraggable?: boolean;
rotation?: number;
alpha?: number;
icon?: { uri: string }; // ← proposed addition
}
Expected usage:
mapViewController.addMarker({
position: { lat: 17.385, lng: 78.4867 },
title: 'Sannihith',
icon: { uri: 'https://example.com/avatar.jpg' },
});
Android (Kotlin) — intended implementation path:
kotlinval iconUri = markerOptionsMap.getString("icon_uri")
val markerOptions = MarkerOptions()
.position(LatLng(lat, lng))
if (iconUri != null) {
val bitmap = BitmapFactory.decodeStream(
URL(iconUri).openConnection().getInputStream()
)
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(bitmap))
}
iOS (Swift) — intended implementation path:
swiftif let iconUri = options["icon_uri"] as? String,
let url = URL(string: iconUri),
let data = try? Data(contentsOf: url),
let image = UIImage(data: data) {
marker.icon = image
}
I am willing to implement the Android side and submit a PR. Happy to align on the preferred API shape before starting if maintainers have a different approach in mind.
- Lenguaje dominante
- TypeScript
- Estrellas
- 226
- Forks
- 39
- Merge medio
- 1 d 20 h
- PR fusionados (30 d)
- 7
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de googlemaps/react-native-navigation-sdk
-
[Support Request]: Status of Expo config plugin release (prebuild fails on 0.19.0)Posiblemente ocupada @jokerttu la tomó hace 1 día. Abierto
googlemaps/react-native-navigation-sdk#711 · 1 asignado ·
Los mantenedores suelen responder en 5 días
-
[Bug]: In-navigation notification can't be stoppedPosiblemente ocupada @jokerttu la tomó hace 8 días. Abiertotriage me type: bug
googlemaps/react-native-navigation-sdk#696 · 1 asignado ·
Los mantenedores suelen responder en 5 días
-
[Bug]: [iOS] Navigation SDK init/quota retry loop pins the main thread; React Native's Settings module and addMarker's temporary GMSMarker add to the costPosiblemente ocupada @illuminati1911 la tomó hace 14 días. Abiertotriage me type: bug
googlemaps/react-native-navigation-sdk#687 · 1 asignado ·
Los mantenedores suelen responder en 5 días
-
[Bug]: iOS crash in GMSObjectDataCache Core Data save (fatal optimistic locking failure)Quizá libre de nuevo @illuminati1911 la tomó hace 60 días y no hay ningún pull request abierto. Abiertonative sdk issue
googlemaps/react-native-navigation-sdk#647 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 5 días
-
[Bug]: CarPlay map view never sets GMSMapViewOptions.screen, so the navigation header and footer are sized for the phoneQuizá libre de nuevo @jokerttu la tomó hace 73 días y no hay ningún pull request abierto. Abierto
googlemaps/react-native-navigation-sdk#640 · 4 comentarios · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 5 días
Todos los issues de googlemaps/react-native-navigation-sdk
Issues similares
-
pending close triaging
Dificultad 1/5 1-3 horas Aptitud para principiantes 74/100
anomalyco/opencode#63090 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
ai-driven-qa bug claude Cosmetic
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
ai-driven-qa bug claude Minor
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
linagora/twake-mail-admin#609 ·
Los mantenedores suelen responder en 1 día