2015-04-14 5 views
0

Я добавил geoxml3.js в свой проект GWT и добавил <script type="text/javascript" src="geoxml3.js"></script> в свой хост-файл html.GWT: Основная визуализация KML не работает

В моем исходном файле Java у меня есть:

// KML utils 
    public final native JavaScriptObject createKmlParser(JavaScriptObject mapId) /*-{ 
     var myParser = new $wnd.geoXML3.parser({ 
      map : mapId 
     }); 
     return myParser; 
    }-*/; 

    public final native void showKml(JavaScriptObject parser, String kml) /*-{ 
     parser.parseKmlString(kml); 
    }-*/; 

    public final native void hideKml(JavaScriptObject parser) /*-{ 
     parser.hideDocument(); 
    }-*/; 

    public void setupKmlLayer(final MapWidget mapWidget) { 
     final JavaScriptObject jsoParser = createKmlParser(mapWidget.getJso()); 
     try { 
      showKml(jsoParser, "cta.kml"); 
     } catch (final JavaScriptException jse) { 

     } 
    } 

и его называют как:

setupKmlLayer(mapWidget); 

KML-файл находится в том же пакете, где этот файл Java присутствует.

Я получил файл KML с официальной страницы Google: http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml

Любые советы, пожалуйста

+0

Я не могу действительно поможет вам на kml, но было бы полезно, если бы вы могли описать, что на самом деле происходит. Является ли нативный вызов на странице, вы можете отлаживать собственную функцию, ... дополнительная информация будет полезна. – thst

+0

Не знаю, как отлаживать собственный код, но я получаю исключение в showKml (jsoParser, «cta.kml»); выше. Я попытался поставить предупреждение внутри блока catch. – EMM

+0

Вы используете SuperDevMode и хром JS-отладчик? Там должен быть класс в исходных картах, и вы должны найти реальный собственный код, если вы не обфускаете во время разработки. – thst

ответ

0

ваш метод showKml() использует метод parseKmlString(). Это проанализирует данный аргумент как KML. Но вы даете ему имя файла KML.

Таким образом: ничего, кроме ошибок синтаксического анализа, может случиться.

Проверить этот документ страница о том, как кормить его в URL:

https://code.google.com/p/geoxml/wiki/GeoXmlMethods

я думаю (не зная об этом), вы должны быть счастливы с реализацией showKml, как это:

public final native void showKml(JavaScriptObject parser, String kmlUrl) /*-{ 
    parser.urls = [kmlUrl]; 
    parser.parse(); 
}-*/;  
+0

Я использую geoxml3.js, но за ваш ответ я изменил мой метод parseKmlString() для синтаксического анализа метода, который STH как вара синтаксического анализа = функции (URLs) {// процесса один или несколько документов в формате KML если (typeof urls === 'string') { // Одиночный документ KML URL = [urls]; } .... Теперь я получаю «Невозможно получить », который является записью журнала в файле geoxml3.js . Я совершенно уверен, что это просто вопрос размещения kml в нужном месте в проекте и, надеюсь, это сработает. – EMM

+0

Загрузка URL должна быть видимой на сетевом мониторе. – thst

+0

Я попытался поместить его в несколько мест, включая пакет, где находится исходный файл java. Теперь я переместил его в папку src/main/resources и обратился к нему с помощью «/resources/cta.kml» Не удалось загрузить ресурс: сервер ответил статусом 404 (не найден) Ошибка HTTP 404 retriving/resources/cta .kml Невозможно получить /resources/cta.kml(geoxml.js's log) – EMM