Подавить инфузионное окно таблицы фьюжн с несколькими слоями
У меня есть карта с двумя слоями таблиц Fusion и я использую suppressInfoWindows
так что информационное окно из одного слоя не остается открытым, когда пользователь нажимает на маркер из другого слоя. Это прекрасно работает, используя следующий код:
<script type="text/javascript">
var map;
var infowindow;
var layer;
var tableid = MY FUSION TABLE ID;
var layer2;
var tableid2 = MY FUSION TABLE ID;
function initialize() {
map = new google.maps.Map(document.getElementById('map_canvas'), {
center: new google.maps.LatLng(10, 30),
zoom: 2,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(map, "click", function() { infoWindow.close(); });
layer = new google.maps.FusionTablesLayer(tableid, {suppressInfoWindows:true});
layer.setQuery("SELECT 'Country Geometry' FROM " + tableid);
layer.setMap(map);
google.maps.event.addListener(layer, "click", openIW);
layer2 = new google.maps.FusionTablesLayer(tableid2, {suppressInfoWindows:true});
layer2.setQuery("SELECT 'Site Location' FROM " + tableid2);
layer2.setMap(map);
google.maps.event.addListener(layer2, "click", openIW);
}
function openIW(FTevent) {
// infoWindow.setContent(FTevent.infoWindowHtml);
// infoWindow.setPosition(FTevent.latLng);
infoWindow.setOptions(
{
content: FTevent.infoWindowHtml,
position: FTevent.latLng,
pixelOffset: FTevent.pixelOffset
});
infoWindow.open(map);
}
</script>
Как теперь я могу добавить собственный html в информационное окно, а не полагаться на настройки информационного окна из таблиц Fusion? Код, который я использовал перед добавлением suppressInfoWindows
Вариант был следующим, но я не уверен, как теперь добавить это обратно, в нужном формате. Кроме того, возможно ли использовать различный HTML-код для информационных окон на разных слоях или оба слоя должны использовать одно и то же информационное окно? Благодарю.
e.infoWindowHtml = "<div id='SiteInfo' class='googft-info-window' style='font-family: sans-serif; width: 500px; height: 300px; overflow: auto;'>\
<b>" + e.row['Site Name'].value + "</b><br />\
</div></div>";
1 ответ
Смотрите мой пример в моем ответе на ваш последний вопрос по этому вопросу.
Пример вашей карты с 2 слоями, 1 информационным окном
Для реализации:
- Подавить информационные окна на обоих слоях
- Напишите код для открытия общего информационного окна при нажатии любого из слоев.