Добавление всплывающей информации в openlayers? - PullRequest
3 голосов
/ 09 октября 2011

Я использую этот код для загрузки файла kml по карте, которая в этом случае я использую OpenStreetMap.
Я хочу знать, как я могу добавить всплывающее окно при нажатии на кмл (дорога), чтобы оно отображало некоторую информацию о нем.

var line_1 = new OpenLayers.Layer.GML(
    'Line - 1', 
    "lines/line_1.kml",
    {
        visibility: true,
        format: OpenLayers.Format.KML,
        style: 
        {
            strokeWidth: 4, 
            strokeColor: "#ff0000", 
            strokeOpacity: 1
        },
        projection: map.displayProjection
    }
);

1 Ответ

4 голосов
/ 25 октября 2011

Слой GML на самом деле является векторным слоем, созданным с использованием данных GML.Таким образом, вы можете посмотреть, как векторные слои следует использовать для открытия всплывающих окон.Ваш пример уже делает это.

Они используют элемент управления Select и открывают всплывающее окно при выборе функции:

selectControl = new OpenLayers.Control.SelectFeature(polygonLayer,
            {onSelect: onFeatureSelect, onUnselect: onFeatureUnselect});

Где polygonLayer в вашем случае будет line_1 вместо.

Создайте метод onFeatureSelect, где вы открываете всплывающее окно:

        function onFeatureSelect(feature) {
        selectedFeature = feature;
        popup = new OpenLayers.Popup.FramedCloud("chicken", 
                                 feature.geometry.getBounds().getCenterLonLat(),
                                 null,
                                 "<div style='font-size:.8em'>Feature: " + feature.id +"<br>Area: " + feature.geometry.getArea()+"</div>",
                                 null, true, onPopupClose);
        feature.popup = popup;
        map.addPopup(popup);
    }

Где map - ваш объект карты.

Попробуйте его и прокомментируйтепрогресс или вопросы.

...