Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';我的代码解析kml到Google Earth有什么问题?_Java_Javascript_Kml_Google Earth Plugin - Fatal编程技术网

Java 什么';我的代码解析kml到Google Earth有什么问题?

Java 什么';我的代码解析kml到Google Earth有什么问题?,java,javascript,kml,google-earth-plugin,Java,Javascript,Kml,Google Earth Plugin,在无法将kml解析为我的GE时,我的代码有什么问题 我在这方面已经坚持了两周,并且尝试了很多其他的方法 欢迎任何帮助 拉斐尔·耶稣 google_earth.jsp var ge; google.load("earth", "1"); function init() { google.earth.createInstance('map3d', initCB, failureCB); window.scroll(0, 10000); } functio

在无法将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);  
}

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();  
}  
public静态字符串getKMLFromObra(){
StringBuffer sb=新的StringBuffer();
某人加上(“”);
sb.append(“
showPics()
不会返回结果。您可以在
回调函数中返回结果。请尝试以下操作:

function showPics(ge) {  
    PainelEarthAjax.geraFotosObra({  
        callback : function(kmlString) {  
            var kmlObject = ge.parseKml(kmlString);  
            ge.getFeatures().appendChild(kmlObject);  
        }  
    });  
} 
然后像这样调用它:

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

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

开口标记中缺少闭合括号

sb.append("<kml xmlns='http://www.opengis.net/kml/2.2' ");  
sb.append(您有一个额外的
关闭标记和一个浮动的
关闭标记,没有实际的
模型
元素

您可以使用XML验证器检查输出,类似于,甚至只是使用TextMate中的XML包。

我收到消息“kml未定义!”

我认为这是jsp上的解析问题,我更改了getKMLFromObra()只是为了测试,我插入了以下代码:

PS:我在kml interactive上测试了这个kml,它在那里工作

getKMLFromObra()


你的错误是什么?你能缩小它的范围吗?将方法的kml输出粘贴到一个文本文件中,很好地识别它,你就会看到它被搞错了。我看到的第一个明显的错误是你有一个没有相应starttagman tks的/Model(endtag)。首先,我得到消息“kml未定义”,我减少我的kml只是为了测试,我得到了这个消息,我已经在kml interactive中测试了我在我的应用程序中得到的相同kml,并且它在那里工作了Hi Pointy,你可以在这一点上提出一些建议吗?[链接]感谢响应的家伙,我已经解决了“>”问题,现在我得到了消息“kml未定义”,我已经测试过了[在这里输入链接描述][1][1]:它工作得很好,在测试中显示了我的照片,我快到了,还有什么?Tks a lotHi epoch,你可以在这一点上提出一些建议吗?[链接]我已经修复了它,Mano,现在消息是“kml未定义!”,但是我的kml还可以,因为我已经在kml interective上测试过了,欢迎任何帮助..TKSI你是根据OGC kml模式验证它的吗?我不明白,验证模式是什么意思?我只知道验证Shema是当你使用Web服务时,我该怎么做,我很抱歉缺乏知识!所以,XML模式描述了它描述了什么元素可以在文档中,以什么顺序,使用什么名称空间。如果您使用的是Oxygen,这里有更多的信息:该消息告诉我,无论您试图使用什么,都是说kml没有定义,因为您没有指定模式来定义它。删除每个分号,添加http://be对于每个名称空间,如xmlns=''。您应该了解更多关于XML的信息,请尝试搜索XML教程。
sb.append("<kml xmlns='http://www.opengis.net/kml/2.2' ");  
sb.append("<kml xmlns='http://www.opengis.net/kml/2.2'>");  
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("<Placemark>");
    sb.append("<name>Simple placemark</name>");
    sb.append("<description>testing fucking kml</description>");
    sb.append("<Point>");
    sb.append("<coordinates>-122.0822035425683,37.42228990140251,0</coordinates>");
    sb.append("</Point>");
    sb.append("</Placemark>");
    sb.append("</kml>");
    return sb.toString();
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);
    ge.getLayerRoot().enableLayerById(ge.LAYER_TERRAIN, false);

    showPics(ge);
}

function showPics(ge) {
    PainelEarthAjax.geraFotosObra({
        callback : function(kmlString) {
            var kmlObject = ge.parseKml(kmlString);
            ge.getFeatures().appendChild(kmlObject);
        }
    });
    return null;
}

function failureCB(errorCode) {

}
google.setOnLoadCallback(init);