Skip to content

Commit 72d57d8

Browse files
committed
KMZLoader: Parse doc.kml when available.
1 parent 60c7bf5 commit 72d57d8

File tree

1 file changed

+30
-29
lines changed

1 file changed

+30
-29
lines changed

examples/js/loaders/KMZLoader.js

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,24 @@ THREE.KMZLoader.prototype = {
2828

2929
parse: function ( data ) {
3030

31-
var manager = new THREE.LoadingManager();
32-
manager.setURLModifier( function ( url ) {
33-
34-
var image;
31+
function findFile( url ) {
3532

36-
zip.filter( function ( path, file ) {
33+
for ( var path in zip.files ) {
3734

3835
if ( path.substr( - url.length ) === url ) {
3936

40-
image = file;
37+
return zip.files[ path ];
4138

4239
}
4340

44-
} );
41+
}
42+
43+
}
44+
45+
var manager = new THREE.LoadingManager();
46+
manager.setURLModifier( function ( url ) {
47+
48+
var image = findFile( url );
4549

4650
if ( image ) {
4751

@@ -58,46 +62,43 @@ THREE.KMZLoader.prototype = {
5862

5963
//
6064

61-
var collada;
62-
6365
var zip = new JSZip( data ); // eslint-disable-line no-undef
6466

65-
zip.filter( function ( path, file ) {
67+
if ( zip.files[ 'doc.kml' ] ) {
6668

67-
var extension = file.name.split( '.' ).pop().toLowerCase();
69+
var xml = new DOMParser().parseFromString( zip.files[ 'doc.kml' ].asText(), 'application/xml' );
6870

69-
switch ( extension ) {
71+
var model = xml.querySelector( 'Placemark Model Link href' );
7072

71-
/*
72-
case 'kml':
73+
if ( model ) {
7374

74-
var xml = new DOMParser().parseFromString( file.asText(), 'application/xml' );
75+
var loader = new THREE.ColladaLoader( manager );
76+
return loader.parse( zip.files[ model.textContent ].asText() );
7577

76-
break;
77-
*/
78-
79-
case 'dae':
78+
}
8079

81-
var loader = new THREE.ColladaLoader( manager );
82-
collada = loader.parse( file.asText() );
80+
} else {
8381

84-
break;
82+
console.warn( 'KMZLoader: Missing doc.kml file.' );
8583

86-
}
84+
for ( var path in zip.files ) {
8785

88-
} );
86+
var extension = path.split( '.' ).pop().toLowerCase();
8987

90-
if ( collada ) {
88+
if ( extension === 'dae' ) {
9189

92-
return collada;
90+
var loader = new THREE.ColladaLoader( manager );
91+
return loader.parse( zip.files[ path ].asText() );
9392

94-
} else {
93+
}
9594

96-
console.error( 'KMZLoader: Couldn\'t find .dae file.' );
97-
return { scene: new THREE.Group() };
95+
}
9896

9997
}
10098

99+
console.error( 'KMZLoader: Couldn\'t find .dae file.' );
100+
return { scene: new THREE.Group() };
101+
101102
}
102103

103104
};

0 commit comments

Comments
 (0)