2011-05-14 32 views
2

我想通過網絡拉一些KMZ文件並將它們覆蓋在Google地圖上。我看過蘋果的kmlParser例子,它非常接近我想要做的,但是在目前的形式下它只能解析KML文件。然而,網絡上的大多數RSS源和谷歌數據似乎都採用KMZ格式(我認爲這是KML文件的壓縮版本)。是否可以在Xcode中以編程方式解壓縮KMZ文件?如何處理Apple的MapKit中的KMZ文件

- (void)viewDidLoad 

{ [super viewDidLoad];

// Locate the path to the route.kml file in the application's bundle 
// 
//NSURL *path = @"http://earthquake.usgs.gov/earthquakes/catalogs/eqs7day-age.kmz"; 
//NSURL *url = [[NSURL alloc] initWithString:@"http://earthquake.usgs.gov/earthquakes/catalogs/eqs7day-age.kmz"]; 
//kml = [[KMLParser parseKMLAtURL:url] retain]; // and parse it with the KMLParser. 
NSString *path = [[NSBundle mainBundle] pathForResource:@"doc" ofType:@"kml"]; 
kml = [[KMLParser parseKMLAtPath:path] retain]; // and parse it with the KMLParser. 


// Add all of the MKOverlay objects parsed from the KML file to the map. 
NSArray *overlays = [kml overlays]; 
[map addOverlays:overlays]; 

在剪斷上述代碼中,我也使用NSURL方法(註釋行)試過,但它不工作。我必須手動下載KMZ文件,將其解壓縮,然後將其提供給KML解析器,理想情況下,我希望在程序本身中執行此操作。

我將不勝感激關於如何解決這個問題的任何幫助或指導。

Soofi

回答

1

你是正確的,KMZ文件只是壓縮了KML文件。文檔的適當部分是here

Apple KML示例非常簡單。如果你想要一個更全面的特色解析器,我會推薦libKML。它完全支持KML標準,並處理KML和KMZ文件。唯一的問題是它是用C++編寫的,並且使用在Obj-C中可能有點痛苦的侵入式指針。

如果你真的想編寫自己的解析器,只需要一種解壓縮文件的方式,ZipKit應該爲你工作。

+0

謝謝..ZipKit的作品。將該代碼整合到項目中是一項工作。你也是對的,蘋果的KML例子很簡單,但對於我的應用程序來說就足夠了。我使用zipkit將結果解壓並提供給Apple的KML解析器。 – 2011-05-17 14:16:32

+0

你應該更新你的鏈接到ZipKit,因爲這是新的鏈接https://github.com/kolpanic/ZipKit – arniotaki 2014-06-22 15:56:50

3

嘿我想推薦KML查看器,

剛纔下載的項目,你會發現那裏的一切

鏈接:KML Viewer

我知道這個答案是晚,但其對誰想要的人蔘考:)