1

このチュートリアル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 ファイルは完全に読み取られます...しかし、画像も表示したい :(

4

1 に答える 1

0

iPhone アプリでの kml の使用についてコメントすることはできませんが、問題が発生する前に発生する可能性が高いと思います。

デスクトップの Google Earth で kml/kmz を表示すると、どちらも正しく動作しますか? あなたはそのように述べていませんが、私の推測ではノーでしょう。もしそうなら、それは私がどうしようもない問題です。

私の提案は、kmz ファイルの参照と構造を実際に検査することです。kmz ファイルの一般的な基準は、アーカイブのルートに doc.kml ファイルを配置し、そのアーカイブの「ファイル」ディレクトリにすべてのリソースを配置することです。このため、すべての参照は相対である必要があります: <href>files\image.png</href> kml を生成する多くのプログラムは、ローカルで機能する絶対参照を使用しますが、kmz に圧縮されたときや他の人が表示したときは使用しません。

于 2012-04-20T19:33:34.850 に答える