4

我正在尝试使用 Apple 的示例 KMLViewer 将道路设计(kml 或 dgn)的自定义绘图覆盖到我的 iPhone 应用程序中的地图视图。我可以说它正在读取 KML,因为地图会缩放到绘图的边界,并且绘图的几个片段会按应有的方式显示。这里最大的问题是大部分图纸根本不显示。随附的屏幕截图仅显示了正在显示的图形的两行。

在此处输入图像描述

另外,请在此处查看调试日志:

2013-07-25 23:07:06.597 KMLViewer[2407:c07] 应用程序窗口预计在应用程序启动结束时有一个根视图控制器 7 月 25 日 23:07:06 Michaels-iMac.local KMLViewer[2407]:ImageIO : CGImageReadSessionGetCachedImageBlockData *** CGImageReadSessionGetCachedImageBlockData: readSession [0x8434040] has bad readRef [0x8463610]

我做了很多研究,这似乎是一个热门话题。我可以使 KMLViewer 适应我的 KML 还是有更好的 Apple 方法?我非常感谢一些建议。越具体越好。在此先感谢您的时间。

4

2 回答 2

1

您可以使用MapBox iOS SDK之类的东西进行显示,使用Simple KML来解析为原生 Cocoa 类型。如上所述,您希望使用地图视图委托提供的注释及其视图/图层。

如果这是静态地图,另一种方法是使用TileMill将 KML 渲染为一组可以叠加到常规地图上的图块。

于 2013-07-26T16:26:50.513 回答
0

我只阅读过这个主题,因为我实际上从来没有需要在 MKMapView 内绘制我自己的路线,但是......

MKPolyLine,一个 MapKit 类和 MKMapViewDelegate 协议方法mapView:(MKMapView *) viewForOverlay:(id < MKOverlay >)将是解决方案的方法。

Apple 关于MKPolyLinemapView:viewForOverlay 的文档:

一个示例项目

一个简单的例子,展示了学习绘制 MKPolyLines 时的常见陷阱

编辑

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");

或(对于故事板)将您的故事板设置为构建设置中的主故事板

于 2013-07-26T03:56:00.783 回答