[RESOLVIDO]Chamada dwr + KML no Google Earth não funciona!

Pessoal por favor me ajudem no que puderem,

Eu vou direto ao ao ponto blz?

Preciso fazer com que apareça fotos (as fotos são enviadas por um funcionário de uma obra de um celular) com lat e long no Google Earth que tenho instalado no painel do sistema, porém não consigo fazer nem a chamada dwr para minha função JavaScript.

Por enquanto esta HardCoded…

google_earth.jsp

[code]var ge;

google.load("earth", "1");

function init() {
	google.earth.createInstance('map3d', initCB, failureCB);
	window.scroll(0, 10000);
}

function initCB(instance) {
	ge = instance;
	ge.getWindow().setVisibility(true);

	ge.getLayerRoot().enableLayerById(ge.LAYER_TERRAIN, false);

	// fetch the KML -> não sei se isso é válido?
	var url = exibeFotos();
             
	google.earth.fetchKml(ge, url, finished);

	function finished(object) {
		if (!object) {
			// wrap alerts in API callbacks and event handlers
			// in a setTimeout to prevent deadlock in some browsers
			setTimeout(function() {
				alert('Bad or null KML.');
			}, 0);
			return;
		}
		ge.getFeatures().appendChild(object);
	}
}

function exibeFotos() {
	PainelEarthAjax.geraFotosObra(<s:property value="obra.id"/> [{
		callback : function(kmlString) {
                         // aqui quando dou um alert da error
                         alert(kmlString);
			if (kmlString != null) {
				var tam = ge.getFeatures().getChildNodes().getLength();
				if (tam > 1) {
					ge.getFeatures().removeChild(
							ge.getFeatures().getLastChild());
				}

				var kmlObject = ge.parseKml(kmlString);
				ge.getFeatures().appendChild(kmlObject);
			}
		}
	}]);

	window.setTimeout("exibeFotos()", 60000);
}

function failureCB(errorCode) {

}

  google.setOnLoadCallback(init);[/code]

A função acima receberia um string com o kml obtido no método java:

PanielEarth.java

@Transactional @SuppressWarnings("static-access") public String geraFotosObra (int idObra) throws Exception { try { return new KMLGenerator().getKMLFromObra(); } catch (Exception e) { log.error(e.getLocalizedMessage(), e); return null; } }

O método abaixo retorna uma string contendo o kml dentro de um StringBuffer:

KMLGenerator.java

[code]public static String getKMLFromObra () {
StringBuffer sb = new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<kml xmlns=‘http://www.opengis.net/kml/2.2’ ");

	// Placemark 
	sb.append("<Document>");
	sb.append("<name>Fotos</name>");
	sb.append("<Style id='sn_ylw-pushpin'></Style>");
	
	
	sb.append("<Placemark>");
	sb.append("<name>" + "Nome do PlaceMark" + "</name>");
	sb.append("<altitudeMode>" + "relaiveToGround" + "</altitudeMode>");
	
	
	sb.append("<Location>");
	sb.append("<longitude>" + -122.3599987260313 + "</longitude>");
	sb.append("<latitude>" + 47.62949781133496 + "</latitude>");
	sb.append("<altitude>"+ 15.49615401024533 + "</altitude>");
	sb.append("</Location>");
	
	sb.append("<Link>");
	sb.append("<href>" + "Aqui vão as fotos que estarão no meu banco de dados (não me pergunte como farei isso).jpg" + "</href>");
	sb.append("</Link>");
	sb.append("</Model>");
	sb.append("</Placemark>");
            return sb.toString();[/code]

No meu appContext.xml

<bean id="exibeFotos" class="nomeDaEmpresa.PainelEarth"> <dwr:remote javascript="PainelEarthAjax"> <dwr:include method="geraFotosObra" /> </dwr:remote> </bean>

E já esta configurado no meu web.xml o dwr tbm…

Iae pessoal aguém já fez isso antes e conhece alguma best pratice?

Já estou uns dias e não saio disso…

Abrcs!

Os dados já estão sendo passados para a jsp, o meu erro era que eu estava passando o id da obra assim na função JavaScript:

<s:property value="obra.id"/>

E é assim:

${obra.id}

Eu vou abrir outro chamado para ver se alguém qual a melhor maneira de mostrar várias fotos no earth,

Placemark ou PhotoOverlay?

Abrcs!!