Harita Stilleri

Sözlük düzenleme, Proje düzenleme katman seçim ekranlarından hazır harita çizim sitili seçilip kullanılabilmektedir.

GEODI haritası çizim stilleri css ile ayarlanmaktadır. AppData/Dece/App/GEODI/SystemStyles veya uygulama yanına SystemStyles klasörüne atılacak css dosyası ile yeni stil tanımı yapılabilir. Katmana özel stil zorlamaları yapılabilir.

Yapılacak CSS tanımları basamaklı mimariyi destekler. Bir etiket bir tanımdan kırmızı renk alıp başka bir tanımdan mavi arka plan alabilir.

 

Stil tanımları

Etiket, nokta, çizgi, alan, GDI ayarları için ayrı tanımlamalar yapılmasını sağlayacak özellikler kullanılabilir.

Etiket düzenlemeleri için label-... , Nokta düzenlemeleri için point-.... , Alan düzenlemeleri için polygon-..., Çizgi düzenlemeleri için line-...., GDI ayarları için map-... tanımları kullanılabilir.

Tanımlar doğrudan kullanılamaz. Bir blok içerisinde etkiyeceği hedef  veya sınıf adı ile kullanılabilir.

Güncel tüm css özellikleri için buraya tıklayınız. Dokümanda açıklama alanlarında kullanılabilecek değerler ve değer tipi belirtilmiştir.

Stil bloğu tanımlama

Bloklar .[SınıfAdı] { .. } , #[Hedef] {..}, #[TypeName] {..} veya  layer{...} şeklinde tanımlanabilir.  "layer" isimli bloktaki tanım tüm geometrileri etkiler.

Bir katmanı etkileyen bloklar için devralma sırası "layer" → [TypeName] → #[LayerId] → #[LayerDisplayName] → .[KatmandaTanımlıSınıfAdı] → .[GeometrideTanımlıSınıfAdı] şeklindedir.

  • layer : Tüm katmanları etkileyen tanımdır. HTML css tanımlarında tagName tanımları gibi düşünülebilir.

  • [TypeName] :  Sadece belirtilen nesne tipteki katmanları etkiler.  Tüm kullanıcı sözlüklerini etkileyecek bir tanım yapmak için GeodiDictionary { .. } şeklinde bir blok tanımı yapılabilir. Güncel tüm tiplerin listesi için tıklayınız.

  • #[LayerId] : Sadece Belirtilen ID'ye sahip katmanları etkiler. Sadece Dünya Kentleri sözlüğünü etkileyecek bir tanım yapmak için GeodiDictionary_462a0511-06ba-4383-9335-0b8c29bd087c { .. } şeklinde bir blok tanımı yapılabilir. Projede kullanılan tüm Katman ID değerlerine tarayıcı konsolu üzerinden CurrentQueryContainer.CurrentWSInfo.Recognizers; ifadesini yazıp ulaşabilirsiniz.

  • #[LayerDisplayName] : Sadece belirtilen isme sahip katmanı etkiler. Katman çoklu dilde vermişseniz blok adı çoklu dil için kullandığınız sözdizimi ile verilmelidir.

  • .[KatmandaTanımlıSınıfAdı] : Katman için sözlük düzenleme veya proje düzenleme arayüzlerinden ismi seçilen katmanları etkiler. CSS tanımında istenilen isimlendirme yapılabilir. CSS içeriklere eklenen tanım düzenleme arayüzlerinde görülecektir.

  •  .[GeometrideTanımlıSınıfAdı] : Sadece Katman/Tanıyıcı düzeyinde özel olarak belirtilmiş geometri tanımlarını etkiler. Bazı tanıyıcı düzenleme arayüzlerinde hangi tip geometriye hangi sınıf tanımının ekleneceği sorulmaktadır.

Bir geometri çizim sırasında listedeki birden fazla tanımdan etkileniyorsa sıralamada son tanımda bulunan özellik geçerli olur. Daha üst bir tanımın her zaman geçerli olabilmesi için tanım içeriğinde !important ifadesi kullanılabilir.


Devralma Örneği

/* Bu örnekte MyClass sınıfı seçilmiş MyLayer isimli bir katman için etkietler . - Kırmızı renkte çizilir. "." ile tanımlı sınıf adı devralma sırasında sondadır. - Siyah zemin kullanılır. Zemini Gri yapmaya çalışan "." ile tanımlı sınıf adı devralma sırasında sonda olsa da devralma sırasında daha önce gelen "#" katman tanımında !important kullanılmıştır. - Yazı kenarları beyazdır. "#" katman tanımından Halo tanımı devralınmıştır. */ .MyCLass { label-Color:Red; label-BackgroundColor:Gray; } layer { label-Color:Blue; } #MyLayer { label-Halo:White; label-BackgroundColor:Black !important; }

Makro kullanımı

  • Stil değerleri için makro kullanılabilir. Sözdizimi kuralları için Makrolar sayfasını inceleyebilirsiniz. Stil değerlerinde [  ] karakterlerinin kullanılmamalıdır.

Devralma Örneği
.MyCLass_A { point-Color:=context.GetColor(context.ID); } .MyClass_B { point-Color:=Color.FromArgb(200,(int)Math.Abs((context.Geometry.Centroid.Y/10000)%255),(int)Math.Abs((context.Geometry.Centroid.X/10000)%255),(int)Math.Abs((context.Geometry.Centroid.X/10000)%255)); } .MyClass_C { label-Enable:=c.MapScale>1000; }

Label(Etiket) stilleri örnekleri

  • CSS özellikleri için Api'den yararlanabilirsiniz. Api için Tıklayınız.

label-Transform:ToUpper; // Etiketteki bütün harfleri büyük-küçük yapmak için kullanılabilir. label-TrimLength:20; // Maksimum 20 karakter. Sonrasını göstermez. label-TrimAddString:"Kemal"; // Etiketin sonuna "Kemal" Ekler. label-MaxWidth:100; // Etiketin maksimum genişliği. Aynısını Maxheight(yükseklik) veya Min height-width için de kullanabilirsiniz. label-AutoHeight:true; // Maksimum genişlik belirtildiği zaman yüksekliği otomatik ayarlar. (Autowidth de yükseklik belirtildiği zaman kullanılabilir.) label-TextUpdater:=c.DisplayName.Split('_')[0]; //Etiketi _ karakterinden bölüp ilk parçayı kullan makrosu. TextUpdater ile etiket üzerinde makro yazılabilir. Bing Harita Etiketlerine Benzer Etiket Stili; label-color:black; label-halo:transparent; label-HaloWidth:2; label-font:Arial, 12pt; label-OffsetY:-15; label-MaxVisible:210000; // Ülke, il, ilçe bazlı kayıt isimlerinin görüntüleme düzeyini sağlar. label-MaxWidth:100; label-AutoHeight:true;

Sözlük Elemanına (Keyword) Özel Stil Tanımlama

  • Sözlükteki her bir keyword için ayrı stil tanımlamak mümkün. KW ve renk bilgisinin yer aldığı bir veritabanı (MS Access, Excel daha kolay olabilir) oluşturulup aşağıdaki örnekteki gibi stil tanımlanır. Parametrelerle ilgili bilgi API referansında yer alıyor.

Sözlükteki Her bir kayıt İçin Farklı İkon Kullanma

  • Aşağıdaki id'sini belirttiğiniz sözlükte örneğin, Ankara diye bir kayıt var. SymbolFile kısmında belirttiğiniz klasördeki Ankara.png dosyası bu kaydın harita ikonu olarak kullanılacaktır.

Sembol Kullanma

  • Nokta tipindeki geometrilerin haritada bir ikon/sembol ile görünmesi için aşağıdaki gibi bir tanım kullanılır. Boyutu ve rengi değiştirilebilir. Örnekteki %App% ifadesi GEODI'nin kurulduğu dizini belirtir. Projeye özel yapılan bu tanımlar ve kullanılan ikon dosyaları bir modül yapılarak ilgili yere yedeklenmelidir.

Sadece İstenen Tanıyıcı için Stil Tanımlama

  • Çalışmasını istediğiniz tanıyıcının id'sini shift+ctrl ile açılan menüden → layers kısmından öğrenebilirsiniz.

GEODI 360 GPS Geometrileri için Stil Tanımlama

  • Bütün GEODI de harita üzerindeki GEODI 360 özelliği ile gelen GPS geometrilerinin stillerini değiştirmek için .GPS isimli genel bir class kullanılabilir. 

  • Proje bazlı yapmak için oluşturduğunuz still class'ını proje düzenleme ekranından Coğrafi Koordinat Tanıyıcı'nın stil arayüzünden seçebilirsiniz.

  • Harita üzerindeki notların stillerini değiştirmek için ise .Note class'ını kullanıyoruz.

Coğrafi Koordinat Tanıyıcı ve Coğrafi Sınır Tanıyıcı için Stil Tanımlama 

  • Coğrafi Koordinat Tanıyıcı için

    • enm_<EnumereatorId> : Örnek enm__FolderContentReaderEnumarator_1bb24a19-eec6-4145-8464-edd8252c35c4

    • GeoC_<ContentCategory> : Örnek : GeoC_CAD, GeoC_OfficeDocs , GeoC_Web_Social, GeoC_Mail, GeoC_Image ...

    • Geo_<ContentExtension> : Örnek Geo_jpeg, Geo_xls

  • Coğrafi Tablo Tanıyıcı için

    • enm_<EnumereatorId> : Örnek enm__FolderContentReaderEnumarator_1bb24a19-eec6-4145-8464-edd8252c35c4

    • BnC_<ContentCategory> : (Zaten vardı) Örnek : BnC_CAD, BnC_OfficeDocs , BnC_Web_Social, BnC_Mail, BnC_Image ...

    • Bn_<ContentExtension> : (Zaten vardı) Örnek Bn_jpeg, Bn_ncz

Örnek : Coğrafi koordinat tanıyıcı uzantısı tweet olan içerikler için özel stil.

MultiPoint geometrilerin ikonunu belirlemek için aşağıdaki ayar true yapılmalıdır

Geometrilerin Harita Ölçeğine Göre Görüntülenmesi

GEODI\SystemStyles\Scale_Geom.css ve GEODI\SystemStyles\Scale_Label.css dosyaları kullanabilirsiniz. Bunlar stil seçme arayüzüne gelecektir. İlgili katman/tanıyıcı stillerine uygulayarak ölçeğe göre görünmesini sağlayabilirsiniz.