Слой Google отображается неправильно с gwt-openlayers

Я использую Gwt 2.6.1 (с инфраструктурой Activity and Places) и gwt-openlayers 1.0.

Проблема возникает, когда я использую слой Google (экземпляр Google или GoogleV3) в качестве базового слоя. Карта появляется, но я не могу масштабировать или перетаскивать, а элементы управления openlayers отсутствуют на дисплее (кнопки масштабирования, переключатель слоев, линия масштаба). После нажатия F5 (обновить) проблемы исчезли и все работает нормально. С базовым слоем Bing таких проблем не возникает.

Ситуация сложная, но ее можно воспроизвести: Вам нужно 3 страницы.

  • первое: это страница приветствия
  • второе: оно может быть пустым. у него есть токен места: "secondPage"
  • третий: страница, содержащая карту (#mapPage)

Вы можете увидеть страницу приветствия, когда открываете приложение в браузере. Затем введите токен второй страницы после URL-адреса (#secondPage). После отображения второй страницы введите токен третьей страницы после базового URL-адреса (#mapPage). Если вы будете следовать этому сценарию, упомянутые проблемы придут.

ui.xml третьей страницы:

<gxt:ContentPanel headerVisible="false" borders="false" bodyBorder="false" height="500px" width="500px"/>

Вид третьей страницы:

...
@Override
public Widget asWidget() {
    this.widget = TestView.uiBinder.createAndBindUi(this);
    ((ContentPanel) TestView.this.widget).add(TestGoogle.getMap());
    return this.widget;
}
...

Класс TestGoogle:

public class TestGoogle {

    public static MapWidget getMap() {
        MapOptions defaultMapOptions = new MapOptions();
        defaultMapOptions.setNumZoomLevels(16);

        MapWidget mapWidget = new MapWidget("100%", "100%", defaultMapOptions);

        GoogleV3Options gHybridOptions = new GoogleV3Options();
        gHybridOptions.setIsBaseLayer(true);
        gHybridOptions.setType(GoogleV3MapType.G_NORMAL_MAP);
        GoogleV3 gHybrid = new GoogleV3("Google Hybrid", gHybridOptions);

        Map map = mapWidget.getMap();
        map.addLayer(gHybrid);

        map.addControl(new LayerSwitcher()); 
        map.addControl(new OverviewMap()); 
        map.addControl(new ScaleLine()); 

        LonLat lonLat = new LonLat(6.95, 50.94);
        lonLat.transform(ProjectionCode.LONGLAT.getEpsgCode(), map.getProjection()); 
        map.setCenter(lonLat, 12);

        return mapWidget;
    }
}

person Imreking    schedule 18.08.2014    source источник


Ответы (1)


Я нашел проблему. Я дважды включил скрипт API карт Google на главную страницу.

person Imreking    schedule 12.09.2014