谷歌地图SDK,iOS,如何计算相机移动的差异

谷歌地图SDK,iOS,如何计算相机移动的差异,ios,google-maps,google-maps-sdk-ios,Ios,Google Maps,Google Maps Sdk Ios,我在iOS上使用谷歌地图。每次用户向左或向右平移时,我都会使用此方法基于新位置重新加载一些数据 - (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position { 现在我试图找到一种方法来计算,如果用户在同一个视图中移动了一点,并且变化不是剧烈的,并且不保证再次加载数据,那么就不要加载它。为此,我创建了一个名为mostRecentCoord的变量,我在加载时维护该变量,该变量保存初

我在iOS上使用谷歌地图。每次用户向左或向右平移时,我都会使用此方法基于新位置重新加载一些数据

- (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position {
现在我试图找到一种方法来计算,如果用户在同一个视图中移动了一点,并且变化不是剧烈的,并且不保证再次加载数据,那么就不要加载它。为此,我创建了一个名为mostRecentCoord的变量,我在加载时维护该变量,该变量保存初始位置

 - (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position    
  {
   //Here mostRecentCoord is self descriptive, latest entry before this move occured.
  if(position.target.latitude == mostRecentCoord.latitude && position.target.longitude == 
   mostRecentCoord.longitude) {
    return;
  }
我想我可以对纬度或纬度的变化设置一个限制,并根据这个限制来决定是否加载新数据,但我必须考虑缩放级别和覆盖范围。 有人对此有想法吗?非常感谢

这里有一个想法:

当您进行数据提取时,将可见区域的边界向四周填充一定量,例如20%


然后,当视图移动时,如果新的可见区域完全包含在填充区域内,则不需要重新加载数据。如果某些新区域位于外部,则需要重新加载。

idleAtCameraPosition会在每次相机结束时调用,以更改其视图

lat和lng是您的移动,直到用户停止平移。更换相机。您可以使用以下命令将其转换为像素,反之亦然:CGPoint point=[map.projection pointForCoordinate:coordinates]

别忘了:

- (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position {

    lastCameraPosition = nil;
}
- (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position {

    lastCameraPosition = nil;
}