MKMapView 不专注于 CoreLocation

Posted

技术标签:

【中文标题】MKMapView 不专注于 CoreLocation【英文标题】:MKMapView not focusing in on CoreLocation 【发布时间】:2012-07-08 18:31:04 【问题描述】:

我在一个简单的 iPhone 应用程序中使用 MapView 和 CoreLocation...CoreLocation 正确显示了我的纬度和经度:

[Session started at 2012-07-08 20:11:35 +0200.]
2012-07-08 20:11:37.082 WhereAmI[5095:207] <+52.37609766, +4.92279518> +/- 70.00m (speed    0.00 mps / course -1.00) @ 7/8/12 8:11:33 PM Central European Summer Time
2012-07-08 20:11:38.605 WhereAmI[5095:207] <+52.37609766, +4.92279518> +/- 70.00m (speed 0.00 mps / course -1.00) @ 7/8/12 8:11:38 PM Central European Summer Time

但是当我跑步时:

[mapView setShowsUserLocation:YES];

突出显示的位置是加利福尼亚的 AppleHQ,而不是阿姆斯特丹 ?

从控制台日志中我确实发现了这个“用户位置视图不可见”错误:

2012-07-08 20:11:46.600 WhereAmI[5095:207] User location view is NOT visible but should be. Showing....

我确实对此进行了搜索,并被建议运行:

mapView.userLocationVisible;

这执行正常,但没有区别?

【问题讨论】:

【参考方案1】:

确保在您的 Xcode 中您没有使用模拟位置。单击调试栏中的箭头按钮(如下所示)并选择“不模拟位置”。在附图中,您想要的按钮在右侧。

编辑: 此答案仅适用于 Xcode 4 及更高版本。 Xcode 3 中没有位置模拟功能。

【讨论】:

这听起来很有希望,但 Xcode 3.2.5 中的调试器看起来不一样?我确实检查了:developer.apple.com/library/ios/#recipes/xcode_help-debugger/… 建议检查:产品 > 调试 > 模拟位置菜单。但我怀疑这是 Xcode 4 的功能?注意我很快就会升级到 10.8(目前是 10.6) 你说得对...我刚看了下,位置模拟首次出现在 Xcode 4 中。我以为你使用的是最新版本 :)【参考方案2】:

运行 mapView.userLocationVisible 但它本身什么也不做。它给你一个价值,你需要用它做点什么。

如果蓝色图钉出现在加利福尼亚(在旧版 XCode 上使用模拟器时它会出现的唯一位置),并且您正在阿姆斯特丹阅读纬度/经度,那么您需要向我们展示您是如何获得的那些纬度/经度,因为 iOS 不能认为它同时在两个地方,你必须手动设置其中一个。

在设置地图视图以查看您的位置时,我会建议 UserTrackingMode,但如果您使用的是 XCode 3.x,那么您可能不在最新的 iOS 上,所以请尝试

- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated

或类参考中“操作地图的可见部分”部分下的任何相关函数http://developer.apple.com/library/ios/#DOCUMENTATION/MapKit/Reference/MKMapView_Class/MKMapView/MKMapView.html

【讨论】:

以上是关于MKMapView 不专注于 CoreLocation的主要内容,如果未能解决你的问题,请参考以下文章

MKMapview 中关于 poi 点的详细信息

将 MKMapView 移动到相对于 superview 的特定位置

相对于缩放级别缩放 MKMapView 注释

在 UIView(不是 MKMapView)中使用 lat/long 的最佳实践

使 MKMapView 的背景颜色变暗而不使 MKOverlay 变暗

MKMapView中心坐标不准确