Search code examples
javascriptanimationgeolocationgoogle-earth-plugin

Moving 3d Model in google earth?


I'm using the Google Earth Web-plugin API and I've got a 3d model of a helicopter, I can create a 3d model using the following code:

var placemark = ge.createPlacemark('');

placemark.setName('model');

// Placemark/Model (geometry)

var model = ge.createModel('heli'); placemark.setGeometry(model);

// Placemark/Model/Link

var link = ge.createLink('');

link.setHref('http://my.url/heli.dae');

model.setLink(link);

// Placemark/Model/Location

var loc = ge.createLocation('');

loc.setLatLngAlt(temp1,temp2,alt)

model.setLocation(loc);

model.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);

// add the model placemark to Earth

ge.getFeatures().appendChild(placemark);

So I've been creating a new model everytime new lat long coordinates come in, is there a way to simply move the 3d models to these coordinates instead of creating a new one, after about 50 renders, it becomes unresponsive! Any help would be appreciated

I assume that instead of createPlacemark I need to getPlacemark, but there's no mention of such a function in the reference.


Solution

  • Rather than recreating the placemark each time - simply update its coordinates. You could easily use a function to do this. You could then simply call the moveModel function with the desired coordinates every time you wish to update the models position.

    var placemark = ge.createPlacemark('');
    var model = ge.createModel('heli'); 
    var link = ge.createLink('');
    
    placemark.setName('model');
    placemark.setGeometry(model);
    link.setHref('http://my.url/heli.dae');
    model.setLink(link);
    
    moveModel(temp1, temp2, alt); // your location...
    
    ge.getFeatures().appendChild(placemark);
    
    function moveModel(temp1, temp2, alt) {
      var loc = ge.createLocation('');
      loc.setLatLngAlt(temp1,temp2,alt)
      model.setLocation(loc);
      model.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);
    }