일부 표식이있는 KML 벡터 레이어를 표시하는지도가 있습니다. 마커를 클릭하면 정보 상자가 나타납니다. 페이지에 전달 된 매개 변수를 기반으로 정보 상자를 자동으로 팝업 할 수 있기를 원합니다. 필자는 이름을 찾기 위해 getFeaturesByAttribute()를 사용하여이 작업을 수행해야한다고 생각하지만 기능 배열은 항상 비어있는 것처럼 보입니다. (FireBug를 사용할 때 내용을 볼 수는 있지만)OpenLayers 기능 배열이 비어 있습니다.
배열에서 항목을 가져 오려면 어떻게해야합니까?
코드 :
function init()
{
var options = {
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
units: "m",
};
map = new OpenLayers.Map('map', options);
var mapnik = new OpenLayers.Layer.OSM("OpenStreetMap");
var gmap = new OpenLayers.Layer.Google("Google", {sphericalMercator:true});
var gsat = new OpenLayers.Layer.Google(
"Google Satellite",
{type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 22}
);
groups = new OpenLayers.Layer.Vector("Groups", {
projection: map.displayProjection,
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: "http://maps.google.co.uk/maps/ms?msa=0&msid=210450558816094618535.0004bd79ceb30e9acb9da&output=kml",
format: new OpenLayers.Format.KML({
extractStyles: true,
extractAttributes: true
})
})
});
map.addLayers([mapnik, gmap, gsat, groups]);
select = new OpenLayers.Control.SelectFeature(groups);
groups.events.on({
"featureselected": onFeatureSelect,
"featureunselected": onFeatureUnselect
});
map.addControl(select);
select.activate();
map.addControl(new OpenLayers.Control.LayerSwitcher());
var center = new OpenLayers.LonLat(-2.58789,51.52283).transform(map.displayProjection, map.projection);
var zoom = 12
map.setCenter(center, zoom);
alert(groups.features.length); // is always 0
}
감사합니다. 훌륭하게 일했습니다! – Paul