Ориентация и / или изменение региона KML в OpenLayers - PullRequest
0 голосов
/ 20 декабря 2011

Я создал несколько приложений Javascript для картографических карт, используя карты Google, и я надеялся воссоздать их в OpenLayers.Я нахожу документацию на их сайте довольно запутанной и сложной для навигации.Пока что я могу загрузить свой KML, используя следующий код:

var map = new OpenLayers.Map({
            div: divName,
            layers: [
                new OpenLayers.Layer.OSM(),
                new OpenLayers.Layer.Vector("KML", {
                    strategies: [new OpenLayers.Strategy.Fixed()],
                    protocol: new OpenLayers.Protocol.HTTP({
                        url: "data.kml",
                        format: new OpenLayers.Format.KML({
                            extractStyles: true, 
                            extractAttributes: true,
                            maxDepth: 4
                        })
                    })
                })
            ],
            zoom: 4
        });
        map.setCenter(
            new OpenLayers.LonLat(-97, 38).transform(
                new OpenLayers.Projection("EPSG:4326"),
                map.getProjectionObject()
            ), 4
        );

Что я хотел бы сделать, так это уметь изменять или ориентировать отдельные области KML.Например, просто прикрепив событие click или изменив цвет фона региона.
Я огляделся и не могу найти хорошего примера.Я загрузил jQuery также, если это помогает.Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 20 декабря 2011

Вы можете добавить события на карты OpenLayers, используя объект OpenLayers.Control.SelectFeature

Чтобы изменить фон объектов, нужно что-то подобное

var myVectorLayer = map.getLayersByName("KML")[0];

var highlightCtrl = new OpenLayers.Control.SelectFeature(myVectorLayer , {
                hover: true,
                highlightOnly: true,
                renderIntent: "temporary"                   
            });

  var selectCtrl = new OpenLayers.Control.SelectFeature(myVectorLayer ,
         {clickout: true}
   );

  map.addControl(highlightCtrl);
  map.addControl(selectCtrl);

Для запуска дальнейших событий / получения более подробной информации о выбранных функциях, которые вы можете использовать

myVectorLayer.events.on({
            "featureselected": function (e) {
                 alert(e.type + " - " + e.feature.id);
    }
});
...