Я использую GWT вместе с API GoogleGaps GWT (v3.8, и нет, я не могу использовать API-интерфейсы для отрубей GoogleMaps).DataGrid внутри InfoWindow не отображает данные таблицы
Я пытаюсь поместить таблицу DataGrid внутри InfoWindow на карте. У меня есть DataGrid работает отлично, пока я показываю его за пределами карты, но всякий раз, когда я добавить DataGrid внутри InfoWindow, ни одна из строк таблицы не отображаются:
Если я правая кнопка мыши InfoWindow , переходите к «проверке элемента», а затем тащитесь через миллионы div, которые создает GWT, я вижу, что данные есть, по какой-то причине это просто не видно.
Я сделал довольно много поискового запроса, но все, что я видел, это то, что DataGrid должен быть дочерним элементом LayoutPanel или ScrollPanel. Но это именно то, что я делаю:
package com.test.client;
import java.util.Arrays;
import com.google.gwt.ajaxloader.client.AjaxLoader;
import com.google.gwt.ajaxloader.client.AjaxLoader.AjaxLoaderOptions;
import com.google.gwt.cell.client.TextCell;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.dom.client.Document;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.DataGrid;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.maps.gwt.client.GoogleMap;
import com.google.maps.gwt.client.InfoWindow;
import com.google.maps.gwt.client.InfoWindowOptions;
import com.google.maps.gwt.client.LatLng;
import com.google.maps.gwt.client.MapOptions;
import com.google.maps.gwt.client.MapTypeId;
public class GwtTest implements EntryPoint {
@Override
public void onModuleLoad() {
AjaxLoaderOptions options = AjaxLoaderOptions.newInstance();
options.setOtherParms("sensor=false");
Runnable callback = new Runnable() {
public void run() {
createMap();
}
};
AjaxLoader.loadApi("maps", "3", callback, options);
//this works
DataGrid dg = createTable();
RootPanel.get("tableDiv").add(new ScrollPanel(dg));
}
public void createMap() {
MapOptions mapOpts = MapOptions.create();
mapOpts.setZoom(4);
mapOpts.setCenter(LatLng.create(37.09024, -95.712891));
mapOpts.setMapTypeId(MapTypeId.TERRAIN);
mapOpts.setStreetViewControl(false);
GoogleMap map = GoogleMap.create(Document.get().getElementById("map_canvas"), mapOpts);
DataGrid dg = createTable();
InfoWindowOptions iwo = InfoWindowOptions.create();
iwo.setPosition(LatLng.create(37.09024, -95.712891));
iwo.setContent(new ScrollPanel(dg).getElement());
InfoWindow infoWindow = InfoWindow.create(iwo);
infoWindow.open(map);
}
public DataGrid createTable(){
Column columnA = new Column(new TextCell()){
public Object getValue(Object object) {
return "one";
}
};
Column columnB = new Column(new TextCell()){
public Object getValue(Object object) {
return "two";
}
};
Column columnC = new Column(new TextCell()){
public Object getValue(Object object) {
return "three";
}
};
DataGrid dataGrid = new DataGrid();
dataGrid.addColumn(columnA, "A");
dataGrid.addColumn(columnB, "B");
dataGrid.addColumn(columnC, "C");
dataGrid.setRowCount(1);
dataGrid.setRowData(Arrays.asList("one", "two", "three"));
dataGrid.setWidth("200px");
dataGrid.setHeight("100px");
return dataGrid;
}
}
Есть ли какой-то шаг, который мне не хватает? Как я могу получить DataGrid для правильного отображения внутри InfoWindow с помощью API GoogleMaps?
Редактировать: После того как вы не получили никаких ответов, я перекрестил этот вопрос на доске объявлений GWT here.
ли форматирование InfoWindow иначе изменить что-нибудь? – Andy
@ Энди Спасибо за ответ. Что именно вы имеете в виду, форматируя мой InfoWindow по-другому? –
К сожалению, я имел в виду настройку содержимого на что-то еще, возможно, определение с помощью html. Хотя я думаю, если вам это нужно как прокручиваемое, это может быть бессмысленно. – Andy