React Native 地图获得可见标记

mKa*_*ane 7 react-native react-native-maps

在 iOS 上,当使用地图套件时,我们能够获取可见地图矩形内的当前注释。这是使用 swift 的一个小片段

Array(myMap.annotations(in: myMap.visibleMapRect))
Run Code Online (Sandbox Code Playgroud)

这个库中有类似的方法或回调吗?

我的基本用途是了解用户何时更改区域(捏合缩放等)并获取仍然可见的当前标记数组。

isc*_*odv 4

有一个getMarkersFrames函数可以做到这一点,但它只是iOS,这就是为什么我从未在我的应用程序中使用它。

我通过使用 RBush 库来存储标记解决了同样的问题: https: //github.com/mourner/rbush。它允许轻松选择所选区域中的点。它通过使用 R 树来快速完成此操作。例子:

getInitialState() {
    return {
        region: {
            latitude: 37.78825,
            longitude: -122.4324,
            latitudeDelta: 0.0922,
            longitudeDelta: 0.0421,
        },
    };
}

componentWillMount() {
    this.tree = new RBush();
    fetch().then((points) => {
        // RBush expects the point to have minX, maxX, minY, maxY
        // but it could be configured.
        this.tree.load(points);
    });
}

onRegionChangeComplete(region) {
    // Get points that are inside the region.
    visibleItems = this.tree.search({
        // Provide the coordinates of the south-west, north-east corners of the region.
        minX: region.longitude - region.longitudeDelta,
        minY: region.latitude - region.latitudeDelta,
        maxX: region.longitude + region.longitudeDelta,
        maxY: region.latitude + region.latitudeDelta
    });
    this.setState({ region, visibleItems });
}

render() {
    return (
        <MapView
            region={this.state.region}
            onRegionChangeComplete={this.onRegionChangeComplete}
        />
    );
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序使用相同的方法,除了我在redux和中加载初始标记并进行搜索redux-saga

如果您不需要显示那么多标记,您可以使用更简单的方法,将点存储在数组中。然后在每个区域更改循环遍历所有位置并选择区域内的位置。