iOS MKMapView不在模拟器中显示地图

时间:2012-09-28 10:25:38

标签: ios ios-simulator mkmapview mapkit

我刚刚开始学习iPhone的iOS开发,并按照几个关于如何使用MapKit Framework显示mapView的示例,我发现谷歌地图图块没有显示,我只得到一个空视图(灰色瓷砖),至少在iPhone模拟器中(我还没试过过设备)。

我也收到此错误消息:

  

/SourceCache/GoogleMobileMaps_Sim/GoogleMobileMaps-363.1.2/googlenav/mac/Loader.mm:235   服务器返回错误:403

我在为Android开发时找到了解决类似问题的解决方案,但对于iOS则没有。有人可以帮我解决这个问题吗?将MapKit框架添加到项目中应该足以使其正常工作,或者我可能缺少一些我未遵循的教程中未提及的额外设置?

谢谢!

这是我使用的简单示例代码:

// ViewController.h
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet MKMapView *mapView;
@end


// ViewController.m
#import "ViewController.h"

@implementation ViewController
@synthesize mapView=_mapView;

- (void)viewDidUnload {
   [super viewDidUnload];
   [self setMapView:nil];
}
... more methods...

在.xib文件中,我将MKMapView连接到文件的所有者mapView插座。在这一点上,根据教程,我应该能够在运行模拟器时看到默认的美国地图,但我总是得到我之前在调试区域发布的错误,而地图视图只显示灰色空格。

8 个答案:

答案 0 :(得分:2)

我遇到了同样的问题 - 我的UIMapView只显示了网格,而不是实际的地图。我退出模拟器,然后再次启动项目 - 现在它显示了地图!似乎iOS模拟器有时会丢失连接,即使您可能已连接到计算机上。 谢谢大家的投入!

答案 1 :(得分:1)

您是否已将代理设置为文件所有者(自己)? 你还包括mapkit框架和相关的头文件吗?

答案 2 :(得分:1)

无论出于何种原因,我的iOS模拟器有时会失去与互联网的连接(我的电脑有连接,但模拟器无法识别它)。一旦我退出并重新启动我的模拟器,我的地图就开始显示了。

答案 3 :(得分:0)

iOS模拟器附带官方地图应用程序。打开它并验证它是否可以获得磁贴,这可能是一个网络问题。没有任何代码,出口,代表或任何地图应该显示地图数据。

答案 4 :(得分:0)

我通过手机连接到WIFI解决了这个问题。我的手机里没有安装SIM卡,因此只显示了瓷砖。只需确保您有网络连接。

答案 5 :(得分:0)

您尝试指定地图区域时在iPhone模拟器和设备上看到的空地图视图(灰色图块)(例如,请参阅下面的代码),但用户未授予访问权限到应用程序设置中的位置。在模拟器上运行时删除这段代码解决了这个问题。

MKCoordinateRegion mapRegion;
mapRegion.center = self.mapView.userLocation.coordinate;
mapRegion.span.latitudeDelta = 0.02;
mapRegion.span.longitudeDelta = 0.02;
[self.mapView setRegion:mapRegion animated: YES];

答案 6 :(得分:0)

如果有人在寻找解决方案。网络问题全权负责此问题。确保您的模拟器具有网络连接,并且如果它能够加载默认的Apple Map,那么您就可以使用了。

答案 7 :(得分:0)

这个问题有点棘手,因为它涉及很多情况,但是对我来说,由于网络监控应用程序的原因,它没有加载。 browser.on('targetcreated', async target => { if (target.type() === "page") { const page = await target.page(); await page.evaluateOnNewDocument(preloadFile); await page.setUserAgent(data.userAgent); await page.setViewport({ width: data.viewportWidth, height: data.viewportHeight }); } }); ,请确保您已连接互联网并且不受监控