阅读kmz文件并在地图上显示图像

时间:2012-04-19 14:04:57

标签: iphone xcode mapkit kml kmz

我阅读了这篇教程Apple kml viewvwer文章。它帮助我加载kml但是当我加载图像时。我在文件夹中创建文件夹名称文件并写入png图像..在kml文件中,使用图像引用..这是代码

self.archive = [ZKDataArchive archiveWithArchivePath:archivePath];
[self.archive inflateAll];
for (int i =0;i < [self.archive.inflatedFiles count]; i++) {

    NSDictionary *fileDict = [self.archive.inflatedFiles objectAtIndex:i]; 
    NSData *fileData = [fileDict objectForKey:ZKFileDataKey];
    NSString *fileName = [fileDict objectForKey:ZKPathKey];
    NSString *ext = [fileName pathExtension];

    NSString* fileToSaveTo;

    if([fileName isEqualToString:@"doc.kml"])
    {

        fileToSaveTo = fileName;
        NSArray* path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
        NSString* documentsDirectory = [path objectAtIndex:0];
        NSLog(@"%@",documentsDirectory);
        [fileData writeToFile:[NSString stringWithFormat:@"%@/%@",documentsDirectory,fileToSaveTo] atomically:YES];

    }
    else{
        fileToSaveTo = [fileName substringFromIndex:6];
        NSLog(@"%@",fileToSaveTo);

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
        NSString *documentsDirectory = [paths objectAtIndex:0];
        // Get documents folder
        NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"files"];
        NSLog(@"%@",documentsDirectory);
        [fileData writeToFile:[NSString stringWithFormat:@"%@/%@",dataPath,fileToSaveTo] atomically:YES];
    }
}

但我无法在地图上看到图像。图像在文档中是安全的,并且kml文件读取完美...但我也想显示图像:(

1 个答案:

答案 0 :(得分:0)

我无法评论在iPhone应用程序中使用kml,但我认为您可能遇到的问题甚至可能在此之前发生。

如果您在桌面上查看Google地球中的kml / kmz,它们是否都能正常工作?你没有这样说,但我的猜测是否定的。如果确实如此,那么这是我无法帮助的问题。

我的建议是实际检查kmz文件引用和结构。 kmz文件的一般标准是在归档的根目录中包含doc.kml文件,并在该归档中的“files”目录中包含所有资源。因此,所有引用都应该是 relative ,如:<href>files\image.png</href>许多生成kml的程序将使用本地工作的绝对引用,但不能在压缩到kmz或其他人查看时使用。