Korzystanie z OpenLayers 2.12, „Odbieram dane mapy KML, zawierające lokalizacje punktów mapy ze zdalnego serwera. Dane są pomyślnie odbierane przez mój Javascript, tworzone są funkcje i mogę zobaczyć znaczniki lokalizacji na mojej mapie.
To, co próbuję zrobić, to utworzyć wyskakujące okienko po kliknięciu każdej lokalizacji. Oto moja obsługa zdarzeń „wybrana przez funkcję”:
function site_selected(event) {
var feature = event.feature;
feature.closeBox = true;
feature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {
"autoSize": true
});
feature.data.popupContentHTML = "<div>hello</div>";
feature.data.overflow = "auto";
feature.lonlat = new OpenLayers.LonLat(feature.geometry.x, feature.geometry.y);
var popup = feature.createPopup(true);
popup.show();
}
Jednak połączenie z feature.createPopup(true)
zwraca null.
Sprawdziłem przykład wyskakujących okienek, ale nie dotyczy to ładowania danych KML. Ustawiam własność lonlat, jednak wciąż zwracam wartość null. Pytanie brzmi: dlaczego?
Odpowiedzi:
0 dla odpowiedzi № 1spójrz na przykłady „popup” https://github.com/ccnmtl/openlayers/tree/master/openlayers/examples
funkcja linii createPopup: https://github.com/ccnmtl/openlayers/blob/master/openlayers/examples/popupMatrix.html#L857
0 dla odpowiedzi nr 2
Odkryłem, że użycie następującego kodu tworzy wyskakujące okienko i wyświetla je na mapie:
popup = new OpenLayers.Popup("popup",
new OpenLayers.LonLat(feature.geometry.x,feature.geometry.y),
new OpenLayers.Size(200,200),
"example popup",
true);
map.addPopup(popup);
popup.show();