Я работаю с OpenLayers и загружаю пару файлов GEOJson, которые отлично работают. Теперь я хочу иметь возможность выбирать отдельные компоненты файла GEOJson. Например, если у меня есть несколько объектов (несколько полигонов), когда я активирую выбор наведения, ничего не происходит.Независимый выбор функций в Openlayers с использованием формата GEOJson
Я добавил селектор парения в этом примере http://openlayers.org/dev/examples/geojson.html
я могу фактически перетащить элементы независимо друг от друга, но не могу выбрать их. Я предполагаю, что это из-за проекции, которую я использую. Любые идеи, как это исправить?
Cheers!
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);
}
Файл GeoJSON выглядит что-то вроде
{ "типа": "FeatureCollection", "особенности": [ { "типа": "особенность", "ID": 0, " свойства ": {}," geometry ": {" type ":" Polygon "," maps ": [[[9.244170, 48.847009], [9.246171, 48.822260], [9.248220, 48.796910], [9.248433, 48.794277], [ 9.290007, 48.791633], [9.298732, 48.785304], [9.153553, 48.859655], [9.203549, 48.861241], [9.235667, 48.852769], [9.235667, 48.848344], [9.244170, 48.847009]]]}} , {"type ":" Feature "," id ": 1," proper связей ": {}," geometry ": {" type ":" Polygon "," codes ": [[[9.064848, 48.755577], [9.038994, 48.741317], [9.104720, 48.709080], [9.104721, 48.709079], [ 9.146561, 48.663574], [9.156822, 48.652414], [9.162166, 48.646602], [9.174173, 48.633544], [9.064848, 48.755577]]]}} , ... и т.д.
исходный код пожалуйста – capdragon