- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一些 iPhone MapKit 代码,本地图边界发生变化时(基本上是对外部服务器的一些查询),这些代码会触发一些事件。有一种边缘情况我似乎无法解决。当用户输入新地址时,我使用 setRegion 放大该位置,然后计算 map 的边界并使用这些坐标查询我的外部服务器。我总是调用 setRegion 但是,有一种边缘情况它不会触发。也就是说,当用户神奇地碰巧选择位于 map 当前中心的完全相同的地址时,当该 map 缩放到完全相同的区域时。当然这种可能性很少见,但通过以下代码很容易实现:
CLLocation *centerOfMap = [[CLLocation alloc] initWithLatitude:mapView.centerCoordinate.latitude longitude:mapView.centerCoordinate.longitude];
mySearchLocation.searchLocation = centerOfMap;
//Recenter and zoom map in on search location
MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center = mySearchLocation.searchLocation.coordinate;region.span.longitudeDelta = 0.01f;
region.span.latitudeDelta = 0.01f;
[self.mapView setRegion:region animated:YES];
这相当于允许用户在当前 map 的中心放置一个图钉,并基于此向我的服务器发起查询。不幸的是,由于代码逻辑取决于区域更改(我这样做是为了让用户可以轻松地在 map 上平移,而不必显式按下刷新按钮),因此我需要解决方法。我如何知道 setRegion 何时被调用但它不会触发 RegionWillChange/RegionDidChange。我可以如何重写该函数吗?
编辑:当我评论第一个答案时,我尝试使用以下代码来检测该区域何时不会更改:
//Recenter and zoom map in on search location
MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center = mySearchLocation.searchLocation.coordinate;
region.span.longitudeDelta = 0.01f;
region.span.latitudeDelta = 0.01f;
region = [mapView regionThatFits:region]; //Not sure if this is necessary
NSLog(@"diff in latitude of center %f", (mapView.region.center.latitude - region.center.latitude));
NSLog(@"diff in longitude of center %f", (mapView.region.center.longitude - region.center.longitude));
NSLog(@"diff in latitude span %f", (mapView.region.span.latitudeDelta - region.span.latitudeDelta));
NSLog(@"diff in longitude span %f", (mapView.region.span.longitudeDelta - region.span.longitudeDelta));
[self.mapView setRegion:region animated:YES];
不幸的是,当我将 searchLocation 设置为当前 map 的中心时,我得到以下结果:
diff in latitude of center 0.000000
diff in longitude of center 0.000016
diff in latitude span -0.000000
diff in longitude span 0.000000
在不同的情况下,错误略有不同,但一般来说,即使区域略有不同(例如 setRegion 或更重要的是,regionDidChange),也不会触发。谁能解释为什么?或者我怎样才能正确地检测到这一点。注意:我也尝试过使用mapView.centerCooperative,但我得到了类似的错误,我只想知道该区域何时不会改变(如果centerCoordinate相同,则缩放级别/区域仍然可以不同)。
最佳答案
如果检测到将 map 设置为当前中心的点,为什么不直接从设置新 map 位置的代码中手动调用 RegionWill/Did 更改?
关于iphone - 我如何知道 MKMapView 上的 setregion 何时不会触发 RegionWillChange/regionDidChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2088118/
我有一个 mapView,我想在其中启用或关闭连续位置跟踪。如果它打开,我希望它在 map 上有用户交互时暂时暂停,并在用户交互结束后短时间恢复。我正在尝试在 regionWillChange 和 r
我有一张 map ,当我平移或输入一个位置并导航到它时,我希望运行一个简单的打印功能。然而,我已经完成了这个,当我第一次加载应用程序时,它会多次调用该打印函数,直到它完成放大。有没有办法不计算应用程序
我正在编写一些 iPhone MapKit 代码,本地图边界发生变化时(基本上是对外部服务器的一些查询),这些代码会触发一些事件。有一种边缘情况我似乎无法解决。当用户输入新地址时,我使用 setReg
当用户移动 map 时调用以下函数。 可以获取视口(viewport)吗?视口(viewport)是北/东和纬度的纬度和经度。和隆。南/西。 func mapView(mapView: MKMapV
在我的应用程序中使用 map View 时,有时 MKMapKit 委托(delegate)方法 'mapView: regionDidChange' 不会调用。它仅在我拖动 map 时发生。但是当我
我是一名优秀的程序员,十分优秀!