Skip to main content

Harita Oluşturma Stili - .render.xml

Varsayılan oluşturma stilini değiştirmek isterseniz, GitHub'daki tanımına bakmanız gerekir. Bu bağlantıda her türlü stili bulacaksınız, bu nedenle kendi stilinizi oluşturacaksanız, en kolay örneği bulabilirsiniz.

Özel bir oluşturma stili oluşturmaya karar verirseniz, özel özelliklerin görüntülenmesini eklemek için kendi haritalarınızı oluşturmanız gerekebilir.

Harita Stili Bölümleri

Harita stili dosyası birkaç bölümden oluşur.

BölümAçıklama
Başlıkname (stil adı), defaultColor (varsayılan harita rengi, defaultColor özniteliğiyle geçersiz kılınabilir) ve depends (tüm özellikleri üst stilden miras alır) içerir.
Parametreler<renderingProperty> olarak tanımlanır, stil içinde parametre adı olarak kullanılacak attr ve kullanıcıya görüntülenecek name, description içerir.
Öznitelikler ve sabitler<renderingAttribute> ve <renderingConstant> olarak tanımlanır, farklı harita nesneleri için aynı oluşturma stili bloklarının yeniden kullanılmasına olanak tanır
Sıra bölümü<order> bloğu olarak tanımlanır. Her harita nesnesi, nokta, çizgi veya çokgen (objectType) olarak oluşturulup oluşturulmayacağını ve hangi order ile görüntüleneceğini belirlemek için sıra bölümünde aranır. Arama parametreleri (girdi): tag, value, zoom, point (doğru veya yanlış), area (osm türü), cycle (başlangıç ve bitiş noktası aynı). Arama sonucu (çıktı): objectType (nokta = 1, çizgi = 2, çokgen = 3), order (0-255). Oluşturma sırası şu şekilde tanımlanır: çokgenler, çizgi gölgeleri, çizgiler, noktalar. Çokgenler için order aynıysa, çokgenler en büyük çokgenden en küçüğe doğru görüntülenir. Not: çokgenler kısmen üst üste binmemelidir, aksi takdirde davranış tanımlı değildir.
Metin bölümü<text> bloğu olarak tanımlanır. Görüntülenen her harita nesnesi, metni görüntüleyip görüntülemeyeceğini ve nasıl görüntüleneceğini belirlemek için aranır. Arama parametreleri (girdi): tag, value, zoom, nameTag (her metin etiketi kontrol edilir). Arama sonucu (çıktı): textOnPath, textMinDistance (aynı metinler arasındaki kenar boşluğu, örn. yol adları, referanslar), textSize, textColor, textHaloRadius, textOrder, textDy, textBold, nameTag2 (varsa parantez içinde ek ad), textShield (metnin etrafındaki arka plan), icon (metin yerine simge), textItalic, textWrapWidth, intersectionMargin (metnin üst üste binmemesi için ek kenar boşluğu).
Nokta bölümü<point> bloğu olarak tanımlanır. Görüntülenen her nokta harita nesnesi (sıra bölümünde tanımlanır), nasıl görüntüleneceğini belirlemek için bu bölümde aranır. Arama parametreleri (girdi): tag, value, zoom, e. Arama sonucu (çıktı): shield (simge kalkanı), icon, iconVisibleSize (simgeleri karıştırmamak için ek boşluk), iconOrder, intersectionSizeFactor.
Çokgen bölümü<polygon> bloğu olarak tanımlanır. Görüntülenen her çokgen harita nesnesi (sıra bölümünde tanımlanır), nasıl görüntüleneceğini belirlemek için bu bölümde aranır. Arama parametreleri (girdi): tag, value, zoom. Arama sonucu (çıktı): color (çokgeni doldurma rengi), shader (aynı simgeyle çokgeni doldurma), color_2, color_N (çokgenin etrafındaki çizginin rengi), strokeWidth_2 (çizgi genişliği), pathEffect_2, cap_2.
Çizgi bölümü<line> bloğu olarak tanımlanır. Görüntülenen her çizgi harita nesnesi (sıra bölümünde tanımlanır), nasıl görüntüleneceğini belirlemek için bu bölümde aranır. 1 çizgi nesnesi, -2 katman aşağıya ve 7 katman yukarıya kadar birden çok birleşik çizgi olarak oluşturulabilir. Arama parametreleri (girdi): tag, value, zoom, nameTag (her metin etiketi kontrol edilir). Arama sonucu (çıktı): color, color_* (çokgenin etrafındaki çizginin rengi), strokeWidth, strokeWidth_* (çizgi genişliği), pathEffect, pathEffect_* (yol efekti), cap, cap_* (BUTT, ROUND, SQUARE), pathIcon, pathIconStep, shadowRadius (çizginin etrafındaki gölge).

Harita Özelliği Seçicileri

Oluşturma stilinden hangi özniteliklerin alınacağını belirlemek için aşağıdaki arama prosedürü tamamlanır:

  • Arama giriş parametreleri tag/value/zoom'a karşılık gelen en içteki <case> bulunur, örn. highway=primary için <case tag="highway" value="primary"> bulunacaktır.
  • <case>'in tüm iç kısımları sıralı olarak derinlemesine uygulanır ve çıktı parametreleri toplanır
  • <case><apply output="1"/><apply_if zoom="15" output="2"> <case> - zoom=15 ise çıktı 2, aksi takdirde çıktı 1 olacaktır.
  • <case>'in herhangi bir <switch>'in parçası olup olmadığı kontrol edilir ve öyleyse, o anahtarın tüm apply ve apply_if'leri de değerlendirilecektir.

Değerlendirme kuralları:

  • Her 'case', apply_if, switch, apply içinde, giriş özniteliklerinin eşleşip eşleşmediği (doğru olarak değerlendirilip değerlendirilmediği) kontrol edilir, aksi takdirde bölüm atlanır ve çıktı öznitelikleri toplanmaz.
  • Tüm kurallar sıralı olarak değerlendirilir ve çıktı parametreleri sonraki kurallar tarafından geçersiz kılınabilir.
  • additional=? nesnenin ek etiketlerini kontrol eden özel bir giriş özniteliğidir.
  • Harita stili parametreleri, tag/value/zoom'un yanı sıra giriş arama parametreleridir.
    • Örnek: <apply_if nightMode="false" streetLightingNight="false" shield="street_lamp_lit_no_shield"/>. Giriş parametreleri: nightMode, streetLightingNight; çıktı parametreleri - shield.

Öznitelikler (özel) ve Sabitler

Oluşturma sabitleri ve oluşturma öznitelikleri birbirinin yerine kullanılabilir ve oluşturma stilini basitleştirmek ve değerlerin veya kod bloklarının kopyalanmasını/yapıştırılmasını önlemek için kullanılabilir. color gibi bir öznitelik tek bir değerse, oluşturma sabiti kullanılması tercih edilir çünkü oluşturma stili performansını büyük ölçüde hızlandırır.

Oluşturma sabitleri yalnızca tek bir verilen değerle kullanılabilir: <renderingConstant name="motorwayShadowRadius" value="1.6"/> ve daha sonra özellik seçicilerinde <apply_if shadowRadius="$motorwayShadowRadius"/> olarak.

Oluşturma öznitelikleri, ekstra seçicilerle gömülü bir yapıya sahip olabilir ve aşağıdaki özniteliklerden birini çıkarabilir (attrColorValue, attrBoolValue, attrFloatValue, attrIntValue, attrStringValue). Örnek:

    <renderingAttribute name="motorroadShadowColor">
<case attrColorValue="#5f5fff"/>
</renderingAttribute>
.....
<case showAccess="true" additional="motorroad=yes" attrColorValue="$motorroadShadowColor"/>

Özel öznitelikler

Özel öznitelikler, seçiciler tarafından kullanılmayan ancak uygulama içinde çizilen belirli bir özelliği (örn. navigasyon rotası, cetvel, gpx izi vb.) sorgulamak için doğrudan kod tarafından kullanılan <renderingAttribute>'lerdir.

Özel öznitelikAçıklama
measureDistanceLineRota Planla özelliği için çizgi oluşturma
markerGuideline, markerPlanRoutelineİşaretçilere çizgiler oluşturma
routeNavigasyon rotası oluşturma
gpxGPX izi oluşturma
publicTransportLineToplu taşıma navigasyon rotası oluşturma
walkingRouteLineToplu taşıma navigasyonu: duraklar arasındaki yaya rotası oluşturma
rulerLineFont, rulerLine, rulerCircleAlt, rulerCircleYarıçap-Cetvel widget'ı nasıl oluşturulur ve dokunarak mesafe nasıl ölçülür
defaultColorHaritayı doldurmak için varsayılan renk (gece / gündüz modunu değiştirir)
shadowRenderingSkia ile gölge nasıl oluşturulur (dahili)
routeInfo_*Örnek: routeInfo_surface, routeInfo_roadClass rotanın lejantında görüntülenecek yol sınıflarını üretir.
polygonMinSizeToDisplayKüçük çizgiler ve küçük çokgenler nasıl oluşturulur (dahili)
roadDensityZoomTileKüçük çizgiler ve küçük çokgenler nasıl oluşturulur (dahili)
roadsDensityLimitPerTileKüçük çizgiler ve küçük çokgenler nasıl oluşturulur (dahili)
defaultSymbolPathSpacingKüçük çizgiler ve küçük çokgenler nasıl oluşturulur (dahili)
defaultBlockPathSpacingKüçük çizgiler ve küçük çokgenler nasıl oluşturulur (dahili)
globalPathPaddingKüçük çizgiler ve küçük çokgenler nasıl oluşturulur (dahili)
debugTextDisplayBBoxMetin oluşturma ve konumlandırmayı hata ayıklama öznitelikleri
debugTextDisplayShieldBBoxMetin oluşturma ve konumlandırmayı hata ayıklama öznitelikleri
debugTextDoNotFindIntersectionsMetin oluşturma ve konumlandırmayı hata ayıklama öznitelikleri
debugTextDoNotFindIntersectionsSameNameMetin oluşturma ve konumlandırmayı hata ayıklama öznitelikleri
debugTextDisplayShortRoadNamesMetin oluşturma ve konumlandırmayı hata ayıklama öznitelikleri

Harita Stili Parametreleri

Harita stili parametreleri, tek bir dosya tanımı içinde birden çok oluşturma stilini birleştirmeye olanak tanır, yani ayrı 'my_custom_style_night_mode.render.xml' dosyalarına gerek yoktur, night_mode gibi bir parametre tanımlamak (varsayılan olarak etkin) ve bu parametreyi kullanarak belirli kuralları (renkler gibi) özelleştirmek mümkündür. Daha sonra Kullanıcı arayüzünde bu parametreyi kolayca değiştirmek ve OsmAnd'da farklı bir harita stiline sahip olmak mümkündür.

İşte baseAppMode parametresinin tanımı. possibleValues, OsmAnd UI'da görüntülenecek değerlerdir, category bu özelliğin hangi UI kategorisine ait olduğunu gösterir.

<renderingProperty attr="baseAppMode" name="Varsayılan Oluşturma modu" description="Temel (üst) profile göre ilgili Kullanıcı Profili için harita optimizasyonu"
type="string" possibleValues="default, car, bicycle, pedestrian, public_transport, boat, ski"/>

Daha sonra seçim stilinde, bu seçicinin ne zaman uygulanabileceğini, yani kullanıcı tarafından belirtilen hangi uygulama modu için uygulanabileceğini belirtebilirsiniz.

<renderingAttribute name="roadsDensityLimitPerTile">
<!-- Döşeme başına görüntülenecek yol sayısı -->
<case moreDetailed="true" attrIntValue="55"/>
<case baseAppMode="pedestrian" attrIntValue="40"/>
<case baseAppMode="bicycle" attrIntValue="40"/>
<case attrIntValue="60"/>
</renderingAttribute>

Yani kullanıcı moreDetailed=true seçerse, yoğunluk için çıktı değeri 55 olacak ve baseAppMode=pedestrian (başka bir parametre) ise 40 olacak, aksi takdirde 60 olacaktır.