Вам необходимо использовать комбинацию элемента управления SelectFeature
и одного из классов OpenLayers.Popup
, например OpenLayers.Popup.FramedCloud
.Вот пример этого:
http://openlayers.org/dev/examples/select-feature-openpopup.html
В этом примере попробуйте использовать опцию «рисовать многоугольник» для рисования многоугольника (дважды щелкните карту, чтобы завершить многоугольник).Затем используйте «выбрать полигон по щелчку» и щелкните по многоугольнику, и вы получите всплывающее облако в рамке.
Вы можете просмотреть исходный код страницы, чтобы увидеть, как это делается.Вот соответствующие части кода.Конечно, вы можете изменить message
на то, что вы хотите отобразить в рамочном облаке:
var map = <your OpenLayers.Map object>;
var polygonLayer = <your vector layer>;
selectControl = new OpenLayers.Control.SelectFeature(polygonLayer,
{onSelect: onFeatureSelect, onUnselect: onFeatureUnselect});
map.addControl(selectControl); // not in the example, but do this
function onPopupClose(evt) {
selectControl.unselect(selectedFeature);
}
function onFeatureSelect(feature) {
var message = "<div style='font-size:.8em'>Feature: " + feature.id +"<br>Area: " + feature.geometry.getArea()+"</div>";
selectedFeature = feature;
popup = new OpenLayers.Popup.FramedCloud("chicken",
feature.geometry.getBounds().getCenterLonLat(),
null,
message,
null, true, onPopupClose);
feature.popup = popup;
map.addPopup(popup);
}
function onFeatureUnselect(feature) {
map.removePopup(feature.popup);
feature.popup.destroy();
feature.popup = null;
}
Вот ссылки на элементы управления, которые вы будете использовать: