如何将除一个标记之外的所有标记聚类

How to cluster all Markers except one

我正在使用 react-native-map-clustering 对 google 地图上的标记进行聚类。所有标记都是动态的,除了一个指示我的位置。当我缩小地图集群时,所有标记。但我想要这样的东西 这是我的实现:

<MapView
            layoutAnimationConf={LayoutAnimation.Presets.easeInEaseOut}
            animationEnabled={true}
            ref={mapRef}
            style={styles.map}
            provider={PROVIDER_GOOGLE}
            initialRegion={currentRegion}
            // region={currentRegion}
            clusteringEnabled={true}
            radius={70}
            customMapStyle={mapConfig}>
            <Marker coordinate={currentRegion} title={'my location'}>
                <Image
                    source={images.currentLocation}
                    style={{
                        height: 20,
                        width: 20,
                    }}
                />
            </Marker>
            {branchMarkers()}
        </MapView>

您可以将 Marker 上的 cluster 属性设置为 false 像这样:

<Marker
  coordinate={coordinate}
  cluster={false}
  ...
/>
  <Image ... />
</Marker>

这将使这个标记永久分散并在所有缩放级别的地图上可见,而不会影响其他集群。在内部,对于作为 MapView 子项的每个 Marker,检查 Marker 是否应该包含在集群中是在 helper function 中完成的,该检查是否已覆盖此道具:

export const isMarker = (child) =>
  child &&
  child.props &&
  child.props.coordinate &&
  child.props.cluster !== false;

TypeScript 用户注意事项:

react-native-map-clustering 不会导出具有定义的 cluster 属性的 Marker 组件。将 cluster prop 应用于从 react-native-maps 导入的 Marker 将触发 ts 编译器错误,因此您需要定义自己的 Marker 类型或忽略此 ts 错误。