[Feature request]: Support custom marker icons (bitmap/URI) via icon field in MarkerOptions

未关闭
#579 1 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

维护者通常 5 天内回复

@jokerttu 已经在做这个了。

开始于 2026年4月26日。

  • #587 来自 @esannihith —— 已关闭,未合并

评估

这个 Issue 还没有评估数据。

描述

triage me type: feature request
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.

主要语言
TypeScript
星标
226
派生
39
平均合并
1 天 20 小时
30 天内合并 PR
7

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

googlemaps/react-native-navigation-sdk 的其他 Issue

查看 googlemaps/react-native-navigation-sdk 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。