Ошибка при запуске GWT Map — отсутствует или недействителен ключ Maps?

#java #google-maps #gwt #smartgwt

#java #google-карты #gwt #smartgwt

Вопрос:

Я пытаюсь интегрировать карту gwt в свое приложение SmartGWT. Но по какой-то причине я получаю эту ошибку. Может кто-нибудь, пожалуйста, помочь мне решить эту проблему. Я использую эту ссылку в качестве ссылки http://forums.smartclient.com/showthread.php?t=3366 .

ошибка, которую я получаю, заключается в том, что экранировано неперехваченное исключение: java.lang.RuntimeException API Maps не был загружен. Отсутствует ли тег в вашем HTML-файле хоста или файле модуля? Отсутствует или недействителен ключ Maps? Дополнительные сведения см. в журнале консоли разработки. Зарегистрируйте обработчик GWT.setUncaughtExceptionHandler(..) для пользовательской обработки неперехваченных исключений.

 //This is added in my module file and i am using Maps v2 API 1.1.1 
<inherits name='com.google.gwt.maps.GoogleMaps' />


   HomeViewImpl homePanel = new HomeViewImpl();
   addTab(homePanel, "Home", "Home");
 

==============================================

 public class HomeViewImpl extends VLayout
{

private MapWidget getMap()
{
    /*MapWidget map = new MapWidget();
    map.setSize("500px", "300px");
    map.addControl(new LargeMapControl());
    map.getInfoWindow().open(map.getCenter(), new InfoWindowContent(getMapInfoWindow()));
    return map;*/
    LatLng cawkerCity = LatLng.newInstance(-22.82, -47.26);
    final MapWidget map = new MapWidget();
    map.setScrollWheelZoomEnabled(true);

    map.addControl(new LargeMapControl());

    map.addOverlay(new Marker(cawkerCity));

    map.getInfoWindow().open(map.getCenter(),
        new InfoWindowContent("World's Largest Ball of Sisal Twine"));

    return map;
}

public Canvas getViewPanel()
{
    HLayout hLayout = new HLayout(5);
    hLayout.addMember(new Label("Dummy Label in a Horizontal Layout"));
    // Add the map to the HTML host page
    hLayout.addMember(getMap());
    return hLayout;
}

private Canvas getMapInfoWindow()
{
    final TabSet topTabSet = new TabSet();
    topTabSet.setTabBarPosition(Side.TOP);
    topTabSet.setWidth(200);
    topTabSet.setHeight(100);

    Tab tTab1 = new Tab("Blue");

    HTMLPane tab1Pane = new HTMLPane();
    tab1Pane.setContents("Hello. This sample shows a google map widget taking part in a SmartGWT Layout");
    tTab1.setPane(tab1Pane);
    Tab tTab2 = new Tab("Green");
    HTMLPane tab2Pane = new HTMLPane();
    tab2Pane.setContents("Google Maps InfoWindow can display SmartGWT Widgets");
    tTab2.setPane(tab2Pane);

    topTabSet.addTab(tTab1);
    topTabSet.addTab(tTab2);
    return topTabSet;
}

@Override
public Widget asWidget()
{
    return getViewPanel();
}

}
 

приветствую
Zolf

Ответ №1:

Здесь происходит несколько вещей.

Версия Google Maps v2 больше не доступна. Пожалуйста, ознакомьтесь с Обновлением вашего приложения Google Maps JavaScript до версии v3. Ссылка, которую вы предоставляете, датирована 2008 годом и действительно устарела.

Во-вторых, для Карт Google (v2 или v3) требуется действительный лицензионный ключ на главной HTML-странице. У GWT есть главная HTML-страница, которая запускает приложение GWT. Ключ Google Maps можно найти здесь.

Вам также потребуется обновленный GWT Google maps API для использования Maps v3. Есть несколько доступных вариантов.

С уважением, Томас.

Комментарии:

1. спасибо за ваши комментарии. не могли бы вы дать мне ссылку на обновленный GWT maps API.

Ответ №2:

Вы должны создать карту и загрузить данные следующим образом,

 Maps.loadMapsApi("", "2", false, new Runnable() {
  public void run() {
   // add your widget with map
  }
});
 

смотрите, например, эту ссылку: http://code.google.com/p/gwt-google-apis/wiki/MapsGettingStarted
amp; загрузите и используйте jar, который используется в этом примере.

Ответ №3:

Хорошо, проблема с моим случаем заключалась в том, что мне пришлось также добавить этот scropt в мой файл модуля.Добавление этого исправило ошибку и отобразило карту.

  <script src="http://maps.google.com/maps?gwt=1amp;amp;file=apiamp;amp;v=2"></script>