我正在尝试使用Apple的示例KMLViewer将道路设计(kml或dgn)的自定义绘图叠加到我的iPhone应用程序中的地图视图中。我可以告诉它正在读取KML,因为地图缩放到绘图的边界,并且图形的几个片段显示为它们应该是。这里的大挂图是大多数图纸根本没有显示。附加的屏幕截图仅显示正在显示的两行图形。
另外,请在此处查看调试日志:
2013-07-25 23:07:06.597 KMLViewer [2407:c07]应用程序窗口是 期望在应用程序结束时有一个根视图控制器 发布时间:Jul 25 23:07:06 Michaels-iMac.local KMLViewer [2407]: ImageIO:CGImageReadSessionGetCachedImageBlockData *** CGImageReadSessionGetCachedImageBlockData:readSession [0x8434040]有 糟读readRef [0x8463610]
我做了很多研究,这似乎是一个热门话题。我可以将KMLViewer改编为我的KML还是有更好的Apple方法?我非常感谢一些建议。越具体越好。在此先感谢您的时间。
答案 0 :(得分:1)
您可以使用MapBox iOS SDK之类的内容进行显示,使用Simple KML来解析本机Cocoa类型。如上所述,您希望使用地图视图委托提供的注释及其视图/图层。
另一种方法,如果这是静态地图,则使用TileMill将KML渲染为一组可以叠加到常规地图上的切片。
答案 1 :(得分:0)
我只读过这个主题,因为我从来没有真正需要在MKMapView中绘制我自己的路线但是...
MKPolyLine,一个MapKit类和MKMapViewDelegate协议方法mapView:(MKMapView *) viewForOverlay:(id < MKOverlay >)
将成为解决方案的方法。
Apple在MKPolyLine和mapView:viewForOverlay:
上的文档一个简单的例子,在学习绘制MKPolyLines时展示一个共同的pitfall
修改强>
23:07:06.597 KMLViewer[2407:c07] Application windows are expected to have a root view controller at the end of application launch
是因为你没有明确告诉Xcode哪个视图控制器是开始视图控制器。
您需要将[window addSubview:[someController view]];
替换为
[self.window setRootViewController:someController];
applicationDidFinishLaunchingWithOptions:
中的
或确保您的main.m指定了正确的代理
retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
或(对于故事板)将故事板设置为Build Settings
中的主要故事板