Class KMLModelPlacemarkImpl

    • Field Detail

      • model

        protected KMLModel model
        Model rendered by this class.
      • parent

        protected KMLPlacemark parent
        Placemark that contains the model.
      • colladaRoot

        protected java.util.concurrent.atomic.AtomicReference<ColladaRoot> colladaRoot
        Reference to the COLLADA root that contains the parsed COLLADA file.
      • resourceRetrievalTime

        protected java.util.concurrent.atomic.AtomicLong resourceRetrievalTime
        Time, in milliseconds since the Epoch, at which this placemark's model resource was last retrieved. Initially -1, indicating that the resource has not been retrieved.
      • resourceMap

        protected java.util.Map<java.lang.String,​java.lang.String> resourceMap
        Map specified by the KML Model's ResourceMap element. The map relates relative references within the COLLADA file to paths relative to the KML document.
      • colladaTraversalContext

        protected ColladaTraversalContext colladaTraversalContext
        Traversal context for rendering the ColladaRoot.
    • Constructor Detail

      • KMLModelPlacemarkImpl

        public KMLModelPlacemarkImpl​(KMLTraversalContext tc,
                                     KMLPlacemark placemark,
                                     KMLAbstractGeometry geom)
        Create an instance.
        Parameters:
        tc - the current KMLTraversalContext.
        placemark - the Placemark element containing the Point.
        geom - the KMLPoint geometry.
        Throws:
        java.lang.NullPointerException - if the geometry is null.
        java.lang.IllegalArgumentException - if the parent placemark or the traversal context is null.
    • Method Detail

      • createResourceMap

        protected java.util.Map<java.lang.String,​java.lang.String> createResourceMap​(KMLModel model)
        Build the resource map from the KML Model's ResourceMap element.
        Parameters:
        model - Model from which to create the resource map.
        Returns:
        Map that relates relative paths in the COLLADA document to paths relative to the KML document.
      • setColladaRoot

        protected void setColladaRoot​(ColladaRoot root)
        Specifies the Collada resource referenced by this placemark, or null if this placemark has no resource.
        Parameters:
        root - the Collada resource referenced by this placemark. May be null.
      • configureColladaRoot

        protected void configureColladaRoot​(ColladaRoot root)
        Apply the model's position, orientation, and scale to a COLLADA root.
        Parameters:
        root - COLLADA root to configure.
      • resolveFilePath

        public java.lang.String resolveFilePath​(java.lang.String path)
                                         throws java.io.IOException
        Resolve COLLADA references relative to the COLLADA document. If the reference is relative then it will resolved relative to the .dae file, not the kml file. If the COLLADA document may be contained in a KMZ archive the resources will be resolved relative to the .dae file within the archive. Normally references in a KMZ are resolved relative to the root of the archive, but Model references are an exception. See https://developers.google.com/kml/documentation/kmzarchives and https://developers.google.com/kml/documentation/kmlreference#model

        Resolve a file path..

        Specified by:
        resolveFilePath in interface ColladaResourceResolver
        Parameters:
        path - A file path relative to a COLLADA document.
        Returns:
        An absolute path to the resource, or null if the path cannot be determined.
        Throws:
        java.io.IOException - If an error occurs attempting to locate the resource.
      • mustRetrieveResource

        protected boolean mustRetrieveResource()
        Returns whether this placemark must retrieve its model resource. This always returns false if this placemark has no KMLLink.
        Returns:
        true if this placemark must retrieve its model resource, otherwise false.
      • requestResource

        protected void requestResource​(DrawContext dc)
        Thread's off a task to determine whether the resource is local or remote and then retrieves it either from disk cache or a remote server.
        Parameters:
        dc - the current draw context.
      • retrieveModel

        protected void retrieveModel​(java.lang.String address)
                              throws java.io.IOException,
                                     javax.xml.stream.XMLStreamException
        Initiates a retrieval of the model referenced by this placemark.Once the resource is retrieved and loaded, this calls setColladaRoot(ColladaRoot) to specify this link's new network resource, and sends an AVKey.RETRIEVAL_STATE_SUCCESSFUL property change event to this link's property change listeners.

        This does nothing if this KMLNetworkLink has no KMLLink.

        Parameters:
        address - the address of the resource to retrieve
        Throws:
        java.io.IOException - if a reading error occurs.
        javax.xml.stream.XMLStreamException - if a parsing error occurs.