3D Globe with markers and tracks

Hello,
I am supposed to make a 3D Globe that will work like webglearth http://webglearth.com.
This can of course be done by running that system inside a webview but having it natively would be a big plus.
Does anyone here know if something similar exists already?
Thanks!

Have you seen the “Globe” sample for Away3D?

Yes, I tried that, however I need the zoom functionality and being able to load vector map tiles from a server.

I would expect this sample to perhaps help with how to get started on the rendering side (zoom would just be a function of altering the camera settings in Away3D) but the next step would be to have a map service to load images from and then to map that onto the sphere mesh

Yep, thanks that is whats to be achieved.
But before I try develop that non-trivial function I try to see if something like it already exists, especially since the tiles come as pbf files.

Not sure about the PBF files, I think you may need to write an importer for that, you may find something javascript, irrespective of that if you are using webgl you will need to convert to power of 2 dimensions.

The navigation is pretty straightforward once you have implemented Away3d, I implemented a 3D globe with satellite 2D icons using a view3D with stage3DProxy. A camera and perspective lens controlled by a hovercontroller, looking at the globe.

The mouse can then affect the hovercontroller panAngle, tiltAngle and distance. If the globe is in a Object3DContainer that can be set to rotate onEnterFrame.

function onEnterFrame(e:Event):Void{
if (move) {
tiltContainer.rotationY += rotateSpeed;
cameraController.panAngle = 0.3*(stage.mouseX - lastMouseX) + lastPanAngle;
cameraController.tiltAngle = 0.3 * (stage.mouseY - lastMouseY) + lastTiltAngle;
}
stage3DProxy.clear();
view.render();
stage3DProxy.present();
}

//Mouse down listener for navigation
function onMouseDown(e:MouseEvent):Void {
lastPanAngle = cameraController.panAngle;
lastTiltAngle = cameraController.tiltAngle;
lastMouseX = stage.mouseX;
lastMouseY = stage.mouseY;
move = true;
}

//Mouse wheel listener for Zoom
function onMouseWheel(e:MouseEvent):Void{
if (e.delta > 0){
cameraController.distance -= 15;
}else{
cameraController.distance += 15;
}

// You can setup some range checks here to restrict zoom in/out if required
}