Openlayers vector layer içerisinde feature araması

8 Tem

Opanlayers 3 kütüphanesinde vektör verilerin gösterilebilmesi amacıyla ol.layer.Vector nesneleri kullanılmaktadır. Bu nesneler içerisinde property olarak  bulunan ve veri kaynağını işaret eden ol.source.Vector nesneleri, vektörlerin nereden ve nasıl alındığını temsil etmektedir. En basit şekliyle bir vektör gösterim temsili şu şekildedir.

var vectorLayer = new ol.layer.Vector({
    source: new ol.source.Vector({
       ulr:'data/file.geojson'
    })
});

Vektör katmanı otomatik olarak verileri kaynak nesnesi aracılığı ile kaynaktan yükleyebilmektedir. Yuakrıdaki örnekte hedef veriler bir *.geojson dosyasında bulunmaktadır.

Başka bir kaynaktan elde edilen bir geometrik verinin katman içerisinde bulunup bulunmadığı bilgisi ya da arama metodu şu anda Openlayers kütüphanesinde bulunmamaktadır. Örneğin eczanelerin konumlarının (Lon, Lat) şeklinde bulunduğu bir katman olsun. Başka bir kaynaktan gelen tek bir noktanın (Lon,Lat) bu katman içerisinde bulunup bulunmadığını araştırmak istiyor olalım. Bu durumda ilk kullanılacak yöntemlerden biri geometrik verilerin WKT biçimlerini karşılaştırması olabilir. Bir noktanın WKT biçimi şu şekildedir:

     POINT(-71.064544 42.28787)

Bir katman içerisinde bir geojson nesnesinin arandığını varsayalım. Bu işlemi gerçekleştiren fonksiyonu şu şekilde hazırlayabiliriz.

var isGeojsonExistInLayer = function (layer, geojson) {
    var isExist = undefined;

    var feature = (new ol.format.GeoJSON()).readFeature(geojson);

    var formatWKT = new ol.format.WKT();
    var wktNew = formatWKT.writeGeometry(feature.getGeometry());

    if(angular.isArray(layer.getSource().getFeatures())){
        angular.forEach(layer.getSource().getFeatures(), function (item) {
            var wktExisting = formatWKT.writeGeometry(item.getGeometry());

            if (wktExisting === wktNew) {
                isExist = item;
            }
        });
    }

    return isExist;
};

Bu fonksiyonda kullanılan Foreach döngüsü angularjs kütüphanesine aittir. Uygulama kodları Openlayers v4.0.1 kütüphanesi kullanılarak hazırlanmıştır.

Openlayers 3 Harita Görünüm Özellikleri

7 Tem

Openlayers3 uygulamalarında, harita görünümü ile ilgili özellikler ol.View nesnesi ile belirlenir. Bu yazıda ol.View ile ilgili birkaç ipucundan bahsedilmiştir.

Bir haritanın belirli iki zoom seviyesinden dışarı çıkmaması için;

   map.setView(
         new ol.View({
             minZoom:1, 
             maxZoom:10
         })
   );

Bir haritanın belirli iki resolution seviyesinden dışarı çıkmaması için;

   map.setView(
          new ol.View({
               minResolution:1, 
               maxResolution:190
         })
   );

Eğer bir katmanın belirli bir çözünürlük aralığı dışında görünmesini istiyorsanız görünüm özelliklerinin katman üzerinde belirlenmesi gerekmektedir.

    var layer = new ol.layer.Tile({
           minResolution:4, 
           maxResolution:70
    });

Bu şekilde atarlanan katmanlarda zoom seviyeniz 3 olduğunda katman görünmez hale gelir. Yani k atmandaki minResolution ve maxResolution özellikleri katmanın visible özelliğini değiştirir.

Bu yazıda bahsedilen özellikler Openlayers V.4.0.1 üzerinde denenmiştir.