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!