gpt4 book ai didi

java - 我的代码将 kml 解析到 Google Earth 时出了什么问题?

转载 作者:行者123 更新时间:2023-12-01 15:33:30 25 4
gpt4 key购买 nike

无法将 kml 解析到我的 GE,我的代码有什么问题吗?

我在这个问题上坚持了两周,并尝试了很多其他方法,

欢迎任何帮助,

拉斐尔·耶稣

google_earth.jsp

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);

// add a navigation control
ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);

// add some layers
ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true);
ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true);

// directs the exact location of the placemark
var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
lookAt.setLatitude(-15.26108113514467);
lookAt.setLongitude(-57.77290131815782);
lookAt.setRange(8007066.726300671);

ge.getView().setAbstractView(lookAt);
ge.getLayerRoot().enableLayerById(ge.LAYER_TERRAIN, false);

var kmlString = showPics();
// I put a alert in here and show in a window the value "undefined"
var kmlObject = ge.parseKml( kmlString );
ge.getFeatures().appendChild(kmlObject);

}

// dwr function that brings the kml with his values  
// for now it is in hard coded, just for tests!!
function showPics() {
PainelEarthAjax.geraFotosObra({
callback : function(kmlString) {
// I put a alert function in here, and it has openned a window
// with the entire kmlString brought from the java method geraFotosObra().
return kmlString;
}
});
}

function failureCB(errorCode) {

}
google.setOnLoadCallback(init);

geraFotosObra.java

public String geraFotosObra () throws Exception {  
try {
return new KMLGenerator().getKMLFromObra();
} catch (Exception e) {
log.error(e.getLocalizedMessage(), e);
return null;
}
}

KMLGenerator.java

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' ");

sb.append("<Document>");
sb.append("<name>ConstruMobil</name>");

sb.append("<Style id='defaultStyles'>");
sb.append("<IconStyle>");
sb.append("<Icon>");
sb.append("<href>" + "http://maps.google.com/mapfiles/kml/pal4/icon38.png" + "</href>");
sb.append("</Icon>");
sb.append("</IconStyle>");
sb.append("</Style>");
sb.append("</Style>");

sb.append("<Placemark>");
sb.append("<name>" + "Some name" + "</name>");
sb.append("<styleUrl>" + "#defaultStyles"+ "</styleUrl>");
sb.append("<altitudeMode>" + "relativeToGround" + "</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>" + "http://localhost:8080/myCompany/lib/img/dubai.jpg" + "</href>");
sb.append("</Link>");
sb.append("</Model>");
sb.append("</Placemark>");

sb.append("</Document>");
sb.append("</kml>");

return sb.toString();
}

最佳答案

getKMLFromObra()函数未返回有效的 XML:

右括号>开头缺失 <kml ...>标签:

sb.append("<kml xmlns='http://www.opengis.net/kml/2.2' ");  

应该是

sb.append("<kml xmlns='http://www.opengis.net/kml/2.2'>");  

为了避免在生成的 XML 中出现此类错误,您应该考虑使用专门的 java 类而不是字符串连接,以下是使用 DOM 生成 XML 的一些示例或SAX : http://www.javazoom.net/services/newsletter/xmlgeneration.html

关于java - 我的代码将 kml 解析到 Google Earth 时出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9260781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com