2012-05-16 9 views
2

У меня есть несколько слоев kml, которые загружаются в мой API карт Google V3 с помощью галочек. Когда выбраны два или более слоя, infowindows на одном слое не автоматически рушится при щелчке маркеров на других слоях. Я хотел бы, чтобы infowindows автоматически закрывался, даже если они находятся на разных уровнях KML. Любые указатели в правильном направлении будут полезны.Проблема с активными окнами infowindows при выборе другого слоя KML - API Карт Google V3

Благодаря

Даррен Вилсон

+0

Но вы можете открыть сразу несколько окон InfoWindow. Что заставляет вас думать, что наблюдаемое поведение неверно? Или вы говорите, что это не так, но как вы обходите это? –

+0

Привет, Андрей, я хочу, чтобы одно окно открыто одновременно, даже если оно активировано через разные слои. –

+0

@DarrenWilson Являются ли InfoWindows открытыми вашим кодом или вы говорите InfoWindows, которые предоставляются непосредственно KmlLayer? –

ответ

4

Вам необходимо отключить создание окна инфо по умолчанию и обрабатывать InfoWindow себя в коде. Вот пример:

var CommonInfoWindow = new google.maps.InfoWindow({"maxWidth": 500}); 

/** @param {...*} KmlMouseEvent */ 
function KmlLayerClicked(KmlMouseEvent) { 
    var ClickData = /** @type {google.maps.KmlMouseEvent} */(KmlMouseEvent); 

    CommonInfoWindow.close(); 

    if (ClickData.featureData && ClickData.featureData.id) { 
    CommonInfoWindow.setOptions({ "position": ClickData.latLng, 
     "pixelOffset": ClickData.pixelOffset, 
     "content": ClickData.featureData.infoWindowHtml 
    }); 
    CommonInfoWindow.open(map); 
    } 
} 

/** @type {google.maps.KmlLayer} */ 
var KmlOverlay = new google.maps.KmlLayer(KmlUrl, { 
    'preserveViewport': true, 
    'suppressInfoWindows': true 
}); 
google.maps.event.addListener(KmlOverlay, "click", KmlLayerClicked); 
+0

Привет, Чад, спасибо за это - я попробовал, но он все еще не работает. InfoWindows предоставляется слоем KML. Очень ценю код! Благодарю. –

+0

Вы пропустили добавление этой опции: '' suppressInfoWindows ': true'. Чтобы это сработало, вы должны сказать api не генерировать свои собственные информационные окна. –

+1

Является ли предлагаемое редактировать самостоятельно? Это анонимно на данный момент. – Fionnuala