Web Tabanlı CBS Uygulamalarında Modern Frontend Yaklaşımları
Coğrafi Bilgi Sistemleri (CBS), konuma dayalı verilerin toplanması, analiz edilmesi ve görselleştirilmesini sağlayan teknolojik altyapılardır. Günümüzde bu sistemler birden fazla yolla kullanıcıyla doğrudan iletişime giriyor. Bu yollardan birisi de web tabanlı uygulamalar.
Harita katmanlarının dinamik yönetimi, gerçek zamanlı veri akışı ve mobil uyumluluk gibi özellikler; modern frontend teknolojilerinin CBS uygulamalarındaki rolünü her geçen gün daha da kritik hale getiriyor.
Bu yazıda, web tabanlı CBS uygulamalarında öne çıkan modern frontend yaklaşımlarını teknik açıdan ele alacağız.
1. React ve MapLibre: Güçlü Bir Başlangıç
React, bileşen tabanlı mimarisi sayesinde CBS uygulamalarında modüler ve yeniden kullanılabilir arayüzler oluşturmayı kolaylaştırır. Örneğin, harita bileşenleri, katman listeleri, filtre panelleri ve bilgi pencereleri birbirinden bağımsız geliştirilebilir.Bu da bakım ve ölçeklenebilirlik açısından büyük avantaj sağlar.
Öte yandan MapLibre GL JS, yüksek performanslı vektör tabanlı harita render’ı sunan açık kaynaklı bir kütüphanedir. Bu iki teknoloji birlikte kullanıldığında, reaktif veri yönetimi ile yüksek performanslı harita motoru birleşir. React bileşenleri, harita üzerindeki kullanıcı etkileşimlerini (örneğin tıklama, sürükleme veya filtreleme) izler ve duruma göre MapLibre katmanlarını anında günceller.
Kısaca özetlemek gerekirse: React, kullanıcı arayüzünü yönetir, MapLibre haritayı çizer. Bu uyum, kullanıcı etkileşimlerine anında yanıt veren, dinamik ve yüksek performanslı uygulamalar geliştirmemizi sağlar.
Aşağıda, React bileşeni içinde basit bir MapLibre haritası oluşturup üzerine bir işaretçi (marker) eklemeyi gösteren temel bir kod parçası bulunmaktadır:

import React, { useEffect, useRef } from "react";
import maplibregl from "maplibre-gl";
const MapComponent = () => {
const mapContainer = useRef(null);
useEffect(() => {
const map = new maplibregl.Map({
container: mapContainer.current,
style: "https://demotiles.maplibre.org/style.json",
center: [29.0, 41.0], // İstanbul koordinatları
zoom: 9,
});
// Marker ekleme
new maplibregl.Marker().setLngLat([28.9784, 41.0082]).addTo(map);
return () => map.remove();
}, []);
return <div ref={mapContainer} style={{ width: "100%", height: "400px" }} />;
};
export default MapComponent;
2. Performans Optimizasyonu: Cluster Rendering
Haritanızda binlerce marker’ı tek tek göstermeye çalıştığınızı düşünün. Bu durumda tarayıcınız kısa sürede yavaşlayacak ve kullanıcı deneyimi olumsuz etkilenecektir. İşte bu noktada cluster rendering (kümeleme) yöntemi devreye girer.
Cluster rendering, birbirine yakın noktaları gruplayarak tek bir sembol olarak gösterir. Örneğin, belirli bir bölgedeki trafik kameralarını tek tek göstermek yerine, üzerinde "50" yazan tek bir daire olarak sunar. Kullanıcı haritayı yakınlaştırdıkça bu kümeler açılarak içindeki noktalar görünür hale gelir. Bu yaklaşım, hem haritayı daha sade ve anlaşılır kılar hem de tarayıcı performansını ciddi ölçüde artırır.
map.addSource("points", {
type: "geojson",
data: "data/points.geojson",
cluster: true,
clusterMaxZoom: 14,
clusterRadius: 50,
});
map.addLayer({
id: "clusters",
type: "circle",
source: "points",
filter: ["has", "point_count"],
paint: {
"circle-color": "#1d4ed8",
"circle-radius": 20,
},
});
3. Gerçek Zamanlı Veri Akışı
Trafik durumu, toplu taşıma araçlarının anlık konumu veya hava kalitesi ölçümleri gibi dinamik verilerin haritada eş zamanlı olarak güncellenmesi gerekir. Bu senaryolar için WebSocket veya SignalR gibi çift yönlü iletişim protokolleri kullanılır.
Bu teknolojileri, sunucu ile tarayıcınız arasında sürekli açık bir telefon hattı kurmaya benzetebiliriz. Sunucu yeni bir bilgi aldığında (örneğin bir otobüsün konumu değiştiğinde), bu hattı kullanarak tarayıcınıza anında bildirim gönderir ve haritadaki ilgili işaretçi otomatik olarak hareket eder. Bu sayede kullanıcılar her zaman en güncel veriye sahip olur.
const socket = new WebSocket("wss://example.com/realtime");
socket.onmessage = (event) => {
const data = JSON.parse(event.data);
// Örn: otobüs lokasyonunu haritada güncelle
new maplibregl.Marker()
.setLngLat([data.lon, data.lat])
.addTo(map);
};
4. Mobil ve PWA Uyumlu CBS: Sahada Kesintisiz Erişim
Saha çalışanları, denetmenler veya afet müdahale ekipleri gibi mobil kullanıcılar için CBS uygulamalarının çevrimdışı (offline) çalışabilmesi büyük bir avantaj sağlar. İnternet bağlantısının kısıtlı veya hiç olmadığı durumlarda bile haritalara, temel verilere ve konum tabanlı araçlara erişebilmek, iş sürekliliği ve verimlilik açısından hayati önem taşır. Progressive Web App (PWA) teknolojisi, bu ihtiyacı karşılamak için ideal bir çözüm sunar.
PWA'lar, modern web teknolojilerini kullanarak bir web sitesini neredeyse bir mobil uygulama gibi davranmasını sağlar. Tarayıcı önbellekleme mekanizmaları (Service Worker'lar aracılığıyla), kullanıcıların daha önce ziyaret ettikleri harita katmanlarını, ikonları ve hatta belirli veri setlerini cihazlarında depolamasına olanak tanır. Böylece internet bağlantısı kesildiğinde bile kullanıcılar önbelleğe alınmış verilere erişebilir ve harita üzerinde gezinebilirler. Böylece harita ve temel veriler önbelleğe alınır, internet yokken bile erişilebilir.

// service-worker.js
self.addEventListener("fetch", (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
return response || fetch(event.request);
})
);
});
5. Kullanıcı Deneyimi: Harita Erişilebilirliği
Modern frontend geliştirme, sadece teknik optimizasyonlardan ibaret değildir; aynı zamanda kullanıcı deneyimini (UX) ve erişilebilirliği de merkeze alır. Bir CBS uygulamasının, engelli bireyler de dahil olmak üzere herkes tarafından etkin ve rahat bir şekilde kullanılabilmesi gerekir. Bu, yasal bir zorunluluğun ötesinde, uygulamanızın kalitesini ve kapsayıcılığını artıran etik bir sorumluluktur.
Erişilebilirlik odaklı tasarım, sadece engelli kullanıcılara değil, aynı zamanda örneğin güneşli bir havada ekranına bakan bir saha çalışanına veya fare kullanamayan profesyonel bir kullanıcıya da fayda sağlar.
Net Kullanıcı Arayüzü: Karmaşık menüler yerine, büyük ve anlaşılır ikonlara sahip sade butonlar kullanılmalıdır.
Yüksek Kontrastlı Renkler: Renk körlüğü olan veya ekranı parlak ışıkta gören kullanıcılar için verilerin kolayca ayırt edilmesini sağlar.
Klavye ile Navigasyon: Fare kullanamayanlar için haritada gezinme, yakınlaşma ve obje seçimi gibi tüm işlevlere klavye ile erişim sağlanmalıdır.
Ekran Okuyucu Desteği (ARIA): Görme engelli kullanıcıların ekran okuyucuları, haritadaki katman isimlerini ve bir işaretçiye tıklandığında açılan bilgi penceresini doğru şekilde okuyabilmelidir.
Web tabanlı CBS uygulamaları, modern frontend teknolojileri sayesinde hızla gelişiyor. React gibi kütüphanelerle modüler arayüzler kurmak, MapLibre ile bu arayüzlere yüksek performanslı haritalar eklemek, WebSocket ile verileri anlık olarak akıtmak ve PWA teknolojisi ile çevrimdışı erişim sağlamak, artık günümüzün standart yaklaşımları haline geldi.
Ancak teknoloji kadar önemli olan bir diğer unsur da insan odaklı tasarımdır. Erişilebilirlik ilkelerini benimseyerek geliştirdiğimiz uygulamalar, CBS'yi yalnızca uzmanların kullandığı niş bir araç olmaktan çıkarıp, herkesin anlık ve doğru konum tabanlı bilgiye erişebildiği dinamik platformlara dönüştürüyor. Ufukta beliren yeni teknolojilerle, bu alandaki inovasyonun hız kesmeden devam edeceği kesin.
