【问题标题】:How to cluster all Markers except one如何聚类除一个之外的所有标记
【发布时间】:2020-07-14 05:50:10
【问题描述】:

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

<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>

【问题讨论】:

    标签: react-native react-native-map-clustering


    【解决方案1】:

    您可以将 Marker 上的 cluster 属性设置为 false,如下所示:

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

    这将使这个标记在地图上以所有缩放级别永久去集群并可见,而不影响其他集群。在内部,对于每个 MapView 的子 Marker,检查该 Marker 是否应该包含在集群中是在 @ 987654321@ 检查此道具是否已被覆盖:

    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 错误。

    【讨论】:

    • 如何定义自己的标记类型?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    相关资源
    最近更新 更多