Слой Google выглядит неправильно с gwt-openlayers
Я использую Gwt 2.6.1 (с каркасом "Деятельности и места") и gwt-openlayers 1.0
Проблема возникает, когда я использую слой Google (экземпляр Google или GoogleV3) в качестве базового слоя. Карта появляется, но я не могу увеличить или перетащить, и на дисплее отсутствуют элементы управления открытыми слоями (кнопки масштабирования, переключатель слоев, масштабная линия). После нажатия F5 (обновить) проблемы исчезли и все работает отлично. С Bing Baselayer эти проблемы не возникали.
Ситуация сложная, но ее можно воспроизвести: вам нужно 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;
}
}
1 ответ
Я нашел проблему. Я включил скрипт API Google Maps на странице хоста дважды.