更改反应本机映射中的区域时,状态更新会延迟

问题描述

关于用resp更新标记我有以下问题。到 react-native-maps 中的某个缩放级别。

我在市区(约900个)中有大量标记,这些标记具有3种不同的形状,即点,圆和旋转的圆,这取决于标记数据(尽管大多数是静态的)。

代替实现聚类(以避免地图上的点过载) 我想实现两个不同的缩放级别,可以在这些缩放级别上更改地图上的标记。 首先,我只想根据缩放级别显示/删除它们。

我的方法很简单:

const markers = (didChangeRegion === 1) ? null:this.allVenueMapMarkers()

<MapView
     ref={(ref)=>{this.mapView=ref}}
     initialRegion={this.state.region}
      provider={MapView.PROVIDER_GOOGLE}
     customMapStyle={mapStyle}
     style={{
      ...StyleSheet.absoluteFillObject,}}
     toolbarEnabled={false}
     onRegionChange={region => this.onRegionChange(region)}
     >
     {markers}
</MapView>

allVenueMapMarkers输出相应的标记组件的地方。

onChangeRegion中,我使用以下指标跟踪当前的缩放级别:

const delta  = Math.sqrt(region.longitudeDelta*region.longitudeDelta + region.latitudeDelta*region.latitudeDelta)

我有一个状态变量didChangeRegion,该变量跟踪此增量的变化。如果缩放级别超过2,我将更改didChangeRegion: 1的状态,并在其delta didChangeRegion: 0。 (感觉是我不希望不断更新状态,而仅当我们越过缩放级别delta = 2时才可以。)

如果此增量发生变化(> 2),我将状态更新为“删除”所有点,如果在下面,则应显示所有点。

结果: 在我的Android设备上,更改缩放级别似乎没有任何延迟(即显示/删除标记) 但是在iOS上,我确实有4秒的延迟,有时甚至更长。

问题: 出现这种滞后的原因可能是什么? 我究竟做错了什么? 是否有更好的方法来更改我错过的缩放级别的标记

注意:

  • 现在我关闭tracksViewChanges,尽管有时必须为动态标记打开它们。

我将不胜感激! 最好的问候

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...