Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用GEOJson格式的Openlayers中的独立特征选择_Openlayers_Geojson - Fatal编程技术网

使用GEOJson格式的Openlayers中的独立特征选择

使用GEOJson格式的Openlayers中的独立特征选择,openlayers,geojson,Openlayers,Geojson,我正在使用OpenLayers并加载两个GEOJson文件,这些文件工作得非常好。现在,我希望能够选择GEOJson文件的各个组件。例如,如果在激活悬停选择时有多个特征(两个多边形),则不会发生任何情况 我在这个示例中添加了悬停选择器 我实际上可以独立拖动元素,但不能选择它们。我想这是因为我使用的投影。有没有办法解决这个问题 干杯 function init(){ var options = { projection: new OpenLayers.Projection("EPSG:9

我正在使用OpenLayers并加载两个GEOJson文件,这些文件工作得非常好。现在,我希望能够选择GEOJson文件的各个组件。例如,如果在激活悬停选择时有多个特征(两个多边形),则不会发生任何情况

我在这个示例中添加了悬停选择器

我实际上可以独立拖动元素,但不能选择它们。我想这是因为我使用的投影。有没有办法解决这个问题

干杯

function init(){

var options = {
    projection: new OpenLayers.Projection("EPSG:900913"),
    displayProjection: new OpenLayers.Projection("EPSG:4326"),
    units: "m",
    numZoomLevels: 18,
};

map = new OpenLayers.Map('map', options );
var mapnik = new OpenLayers.Layer.OSM({layers: 'basic'});           
map.addLayer(mapnik);

map.addControl(new OpenLayers.Control.MousePosition());

var lon = 12.18;
var lat = 53.81;
var lonLat = new OpenLayers.LonLat(lon,lat).transform(map.displayProjection,  map.projection);

var mapcent = new OpenLayers.LonLat(lon, lat).transform(map.displayProjection, map.projection);
zoom = 5.5;
map.setCenter(mapcent, zoom);
document.getElementById('noneToggle').checked = true;

var proj = new OpenLayers.Projection("EPSG:4326");

var file = [];
file[0] = "geojson/nuts3.geojson";

var style = [];

i=0;
while(i<file.length){
    style[i] = new OpenLayers.StyleMap({
        pointRadius: 2,
        strokeColor: 'red',
        strokeWidth: 1,
        strokeOpacity: 1,
        fillColor: 'red',
        fillOpacity: 0.2
    });

    var layer_name = "layer_" + i;
    vectorLayer[i] = new OpenLayers.Layer.Vector(layer_name,  {
        styleMap: style[i],
        projection: map.displayProjection,
        preFeatureInsert: function(feature){
        feature.geometry.transform(proj, map.getProjectionObject());
        },
    });
    map.addLayer(vectorLayer[i]);   

    var gjson = new OpenLayers.Format.GeoJSON();
    var featurecollection = ReadFile(file[i]);
    //Readfile is just a normal Request.POST function   
    vectorLayer[i].addFeatures(gjson.read(featurecollection));  
    i=i+1;
}

controls = {
    selecthover: new OpenLayers.Control.SelectFeature(vectorLayer[0],{
        hover: true,
        highlightOnly: true
    })
};

for(var key in controls) {
    map.addControl(controls[key]);
    controls[key].activate();

}

            var report = function(e) {
            OpenLayers.Console.log(e.type, e.feature.id);
        };

        var highlightCtrl = new OpenLayers.Control.SelectFeature(vectors, {
            hover: true,
            highlightOnly: true,
            renderIntent: "temporary",
            eventListeners: {
                beforefeaturehighlighted: report,
                featurehighlighted: report,
                featureunhighlighted: report
            }
        });


        map.addControl(highlightCtrl);
        map.addControl(selectCtrl);            
}   
函数init(){
变量选项={
投影:新OpenLayers.projection(“EPSG:900913”),
displayProjection:new OpenLayers.Projection(“EPSG:4326”),
单位:“m”,
numZoomLevels:18,
};
map=newOpenLayers.map('map',选项);
var mapnik=newopenlayers.Layer.OSM({layers:'basic'});
map.addLayer(mapnik);
addControl(新的OpenLayers.Control.MousePosition());
var-lon=12.18;
var lat=53.81;
var lonLat=newopenlayers.lonLat(lon,lat).transform(map.displayProjection,map.projection);
var mapcent=newopenlayers.LonLat(lon,lat).transform(map.displayProjection,map.projection);
缩放=5.5;
地图设置中心(mapcent,zoom);
document.getElementById('noneToggle')。checked=true;
var proj=新OpenLayers.Projection(“EPSG:4326”);
var文件=[];
文件[0]=“geojson/nuts3.geojson”;
var样式=[];
i=0;
(iOK)我解决了它

根据该问题正确答案中提出的投影,并对geojson文件的每个部分使用独立的id,可以选择悬停