Türkiye il ilçe seçici harita <tr-geo-picker>

Türkiye haritası üzerinden il veya ilçe seçtiren, form içinde normal bir <input> gibi davranan, bağımlılıksız Web Component. Bölge › il › ilçe sırasıyla iner; arama, klavye ve liste ile de seçim yapılabilir.

GitHub

İlçe seçimi (form, required)

mode="ilce", value-type="id". Gönder'e bastığınızda formun POST edeceği veri aşağıda görünür.

—
Kod
<form method="post" action="/kayit">
  <tr-geo-picker name="ilce" required></tr-geo-picker>
  <button>Gönder</button>
</form>
<script type="module" src="tr-geo-picker.min.js"></script>

Sadece il, değer olarak isim

mode="il" value-type="name". İl seçilince akış biter.

—
Kod
<tr-geo-picker name="il" mode="il" value-type="name"></tr-geo-picker>
<!-- form: il=Düzce -->

Popover (kompakt alan)

display="popover". Input yüksekliğinde bir alan; tıklayınca harita paneli açılır. Ayrı alanlar için emit-fields, isim ayracı name-separator=" › ".

—
Kod
<tr-geo-picker name="lokasyon" display="popover"
               value-type="name" name-separator=" › "
               emit-fields></tr-geo-picker>
<!-- form: lokasyon, lokasyon_bolge, lokasyon_il, lokasyon_ilce -->

Tek ile kilitli + önceden seçili

start-il="81" lock-level value="1815". Düzce ilçeleri açılır, Akçakoca seçili gelir, yukarı çıkılamaz.

—
Kod
<!-- edit formu: kayıtlı değer ile açılır -->
<tr-geo-picker name="ilce" start-il="81" lock-level
               value="<%= rs("IlceKodu") %>"></tr-geo-picker>

Filtre: yalnız hizmet verilen yerler

filter property'si ile yalnız Marmara ve Ege illeri seçilebilir; diğerleri gri çizilir.

Kod
const izinli = new Set(['marmara', 'ege']);
el.filter = (item) =>
  item.level === 'bolge' ? izinli.has(item.id)
  : item.level === 'il' ? izinli.has(item.bolge)
  : true;

Özel değerler (value-type="custom")

Katalog data property'siyle verilir; her ilçeye kendi veritabanı id'niz (value) eklenir.

—
Kod
const cat = await fetch('data/catalog.json').then((r) => r.json());
el.data = {
  ...cat,
  ilceler: cat.ilceler.map((c) => ({ ...c, value: dbId[c.id] })),
};
// form: lokasyon_id=ILCE_5521

Event kaydı

Sayfadaki tüm bileşenlerin input, change, tks-navigate ve tks-error event'leri.


  

Kurulum

npm ile kurun ya da dist/ ve data/ klasörlerini sunucunuza kopyalayın. Çalışmak için başka bir kütüphane gerekmez.

npm install tr-geo-picker
<script type="module" src="/js/tr-geo/dist/tr-geo-picker.min.js"></script>
<tr-geo-picker name="ilce"></tr-geo-picker>

Özellikler

Sık sorulanlar

Formdan ne gönderilir? Varsayılan olarak ilçe kodu (ilce=1815). value-type="name" ile isim, value-type="custom" ile kendi veritabanı id'leriniz gönderilir.

Sadece il seçtirebilir miyim? Evet, mode="il". Form plaka kodunu (il=34) gönderir.

Harita verisi güncel mi? İl ve ilçe listesi e-İçişleri'nden, sınırlar OpenStreetMap tabanlı geoBoundaries'ten alınır ve paketle birlikte gelir. Dış servise istek atılmaz.

Bütün seçenekler: API dokümanı, örnekler, tema.