mKa*_*ane 7 react-native react-native-maps
在 iOS 上,当使用地图套件时,我们能够获取可见地图矩形内的当前注释。这是使用 swift 的一个小片段
Array(myMap.annotations(in: myMap.visibleMapRect))
Run Code Online (Sandbox Code Playgroud)
这个库中有类似的方法或回调吗?
我的基本用途是了解用户何时更改区域(捏合缩放等)并获取仍然可见的当前标记数组。
有一个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。
如果您不需要显示那么多标记,您可以使用更简单的方法,将点存储在数组中。然后在每个区域更改循环遍历所有位置并选择区域内的位置。
| 归档时间: |
|
| 查看次数: |
3044 次 |
| 最近记录: |