将KML或URL Map添加到iPhone App

时间:2013-07-26 03:28:56

标签: iphone ios google-maps-api-3 mapkit kml

我正在尝试使用Apple的示例KMLViewer将道路设计(kml或dgn)的自定义绘图叠加到我的iPhone应用程序中的地图视图中。我可以告诉它正在读取KML,因为地图缩放到绘图的边界,并且图形的几个片段显示为它们应该是。这里的大挂图是大多数图纸根本没有显示。附加的屏幕截图仅显示正在显示的两行图形。

enter image description here

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

  

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方法?我非常感谢一些建议。越具体越好。在此先感谢您的时间。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我只读过这个主题,因为我从来没有真正需要在MKMapView中绘制我自己的路线但是...

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

Apple在MKPolyLinemapView:viewForOverlay:

上的文档

An example project

一个简单的例子,在学习绘制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

中的主要故事板