React原生Map聚类

von4xj4u  于 2022-12-14  发布在  React
关注(0)|答案(4)|浏览(219)

我想在我的react-native应用中集成Map,我正在使用https://github.com/airbnb/react-native-maps的“react-native-maps”库。我想使用聚类,但我无法找到相关的适当文档。请帮助我找到如何将Map与聚类集成的文档,并告诉我哪个库最适合在iOS和Android两个平台上实施聚类。

taor4pac

taor4pac1#

你可以使用mapbox/superclusterrepohere's a gist来展示如何实现React Native的超级集群。它最初是为浏览器/节点应用程序开发的,但你仍然可以简单地使用npm install(javascript在任何地方都是javascript)。将集群标记添加到你的MapView中(最初在这里分享):

<MapView ref={ref => { this.map = ref; }}>
  { this.state.markers.map((marker, index) => {
    return (
      <MapView.Marker 
        coordinate={{ latitude: marker.geometry.coordinates[1], longitude: marker.geometry.coordinates[0] }}
        onPress={() => this.markerPressed(marker)}>
        <Marker model={place} active={this.isSelected(place)} />
      </MapView.Marker>
    );
  })}
</MapView>

警告来自react-native-mapsissue

主要的问题是性能,如果你需要显示成百上千的标记,你就必须优化它,这是它变得非常困难的地方。
react-native-maps也有一个活动的conflictedPR,它在Android和iOS**中本机解决了这个问题,但它等待合并。不过,你可以手动实现它。

icomxhvb

icomxhvb2#

你可以使用react-native-maps-super-cluster。这个模块 Package 了AirBnB's react-native-maps,并使用MapBox's SuperCluster作为聚类引擎。这个模块超级容易使用。
演示

还有一个用于群集react-native-map-clustering的库。

bq9c1y66

bq9c1y663#

Yarn添加React-本机-Map-聚类

import {Marker} from 'react-native-maps';
import MapView from "react-native-map-clustering";

    const INITIAL_REGION = {
      latitude: 52.5,
      longitude: 19.2,
      latitudeDelta: 8.5,
      longitudeDelta: 8.5,
    };
    
    const App = () => (
      <MapView initialRegion={INITIAL_REGION} style={{ flex: 1 }}>
        <Marker coordinate={{ latitude: 52.4, longitude: 18.7 }} />
        <Marker coordinate={{ latitude: 52.1, longitude: 18.4 }} />
        <Marker coordinate={{ latitude: 52.6, longitude: 18.3 }} />
        <Marker coordinate={{ latitude: 51.6, longitude: 18.0 }} />
        <Marker coordinate={{ latitude: 53.1, longitude: 18.8 }} />
        <Marker coordinate={{ latitude: 52.9, longitude: 19.4 }} />
        <Marker coordinate={{ latitude: 52.2, longitude: 21 }} />
        <Marker coordinate={{ latitude: 52.4, longitude: 21 }} />
        <Marker coordinate={{ latitude: 51.8, longitude: 20 }} />
      </MapView>
    );

sbdsn5lh

sbdsn5lh4#

如何使用标注?使用以下代码会出现错误:元素类型无效:应为字符串...

<Marker>
    <MapView.Callout tooltip>
        <Text>Test Text</Text>
    </MapView.Callout>                    
</Marker>

相关问题