2016-03-24 25 views
0

Bir geojson dosyasından "SCHULNAME" özelliğini almaya çalışıyorum. Koordinatlar doğru görüntülenirOpenlayers 3: Bir katmandaki geojson özelliği için "undefined" olsun

map.on('singleclick', function(evt) { 
    var feature = map.forEachFeatureAtPixel(evt.pixel, 
       function(feature, layer) { 
       return feature; 
       }); 
    if (feature) { 
    var coordinate = evt.coordinate; 
    var printCoord = ol.proj.transform(feature.getGeometry().getCoordinates(), 'EPSG:3857','EPSG:4326'); 
    var printProps = feature.getProperties(); 
    PopupContent.innerHTML = '<table style="width:100%">'+ 
           '<tr>' + '<td>'+'<b>Coordinates:</b> ' + Math.round(printCoord[1] * 100)/100 + 'N, ' + Math.round(printCoord[0] * 100)/100 +'E' +'</td>'+'</tr>'+ 
           '<tr>'+'<td>'+"<b>Name:</b> " +printProps.SCHULNAME+'</td>'+'</tr>'+ 
           '</table>'; 
    Popup.setPosition(coordinate); 


    }}); 

: Burada özelliklere sahip bir pop-up penceresi açmak için işlevidir

{"type":"FeatureCollection", 

"crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}}, 

"features":[{"type":"Feature","properties":{"spatial_name":"01A01", 
    "spatial_alias":"1. Schulpraktisches Seminar (S) Mitte", 
    "spatial_type":"Point", 
    "SCHULNAME":"1. Schulpraktisches Seminar (S) Mitte", 
    "SCHULART":"Schulpraktisches Seminar", 
    "TRAEGER":"Bezirk", 
    "ZWEIG_01":"Schulpraktisches Seminar", 
    "ZWEIG_02":null, 
    "ZWEIG_03":null, 
    "ZWEIG_04":null, 
    "BEZIRK":"Mitte", 
    "ORTSTEIL":"Wedding", 
    "PLZ":"13353", 
    "ADRESSE":"Tegeler Str. 16", 
    "TELEFON":"4677779713", 
    "FAX":"4677779720", 
    "EMAIL":"<a href=\"mailto:[email protected]\">[email protected]</a>", 
    "INTERNET":null,"LEITUNG":null}, 
"geometry":{"type":"Point", 
    "coordinates":[13.35812948892163,52.54071751171907]}},... 

: Burada

GeoJSON dosyasından snippet'idir. "SCHULNAME" için undefined sonucunu elde ederim. Aşağıdaki GeoJSON dosyası ve özellik için aynı kodu kullanırsanız, ancak "name" mükemmel çalışır: Ben burada eksik

{"type":"FeatureCollection", 
"features":[{"type":"Feature","properties":{"name":"Mitte", 
    "description":"", 
    "cartodb_id":1, 
    "created_at":"2013-09-03T12:32:04+0200", 
    "updated_at":"2013-09-03T12:32:04+0200"}, 
"geometry":{"type":"MultiPolygon", 
    "coordinates":[[[[13.403528,52.540212], ... 

?

+0

Beklenen özelliği aldığınızdan emin misiniz? –

+0

Daha önce belirttiğim gibi: Koordinatlar doğru şekilde görüntüleniyor. Yani beklenen özelliği almak için eminim. – TotoSchillaci

+0

@ user3725485 bit koordinatları, tıklama etkinliğinin yalnızca koordinatlarıdır. Bir maç için yeterince yakın olan başka bir özellik olabilir mi? –

cevap

0

Sorunun sebebinin ne olduğunu buldum, ancak bunun neden olabileceğini anlamadığım için sizden bir açıklama isterim.

İlk GeoJSON katmanı için bir ol.source.Cluster oluşturulan ve bu küme kaynağına o ol.layer.Vector tabakasının kaynağını ifade:

var schoolCluster = new ol.source.Cluster({ 
    source:new ol.source.Vector({ 
     url: 'Schools.geojson', 
     format: new ol.format.GeoJSON(), 
    }) 
}); 

var Schools = new ol.layer.Vector({ 
    source: schoolCluster, 
    style: iconStyleSchools 
    }); 

Ama nedense sadece ben doğrudan kaynak dediğimiz zaman özelliklerini almak için çalışır Bu gibi herhangi bir küme olmadan vektör katmanı: Ben GeoJSON dosyasından istedi ve artık herhangi undefined alamadım tüm özelliklerini alabilir bu kod ile

var Schools = new ol.layer.Vector({ 
    source:new ol.source.Vector({ 
     url: 'Schools.geojson', 
     format: new ol.format.GeoJSON(), 
    }), 
    style: iconStyleSchools 
    }); 

. Birisi nedenini açıklayabilir mi?