Modül:Konum haritası - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Kullanımı
  • 2 İzleme/bakım kategorileri
  • 3 Tüm haritalar
  • 4 Ayrıca bakınız

Modül:Konum haritası

  • Аԥсшәа
  • Afrikaans
  • Aragonés
  • العربية
  • الدارجة
  • مصرى
  • অসমীয়া
  • Asturianu
  • Авар
  • Azərbaycanca
  • تۆرکجه
  • Basa Bali
  • Boarisch
  • Bikol Central
  • Bajau Sama
  • Беларуская
  • Български
  • भोजपुरी
  • ပအိုဝ်ႏဘာႏသာႏ
  • বাংলা
  • བོད་ཡིག
  • Brezhoneg
  • Bosanski
  • Batak Mandailing
  • Буряад
  • Català
  • Chavacano de Zamboanga
  • 閩東語 / Mìng-dĕ̤ng-ngṳ̄
  • Нохчийн
  • Cebuano
  • Chamoru
  • کوردی
  • Чӑвашла
  • Cymraeg
  • Dansk
  • Thuɔŋjäŋ
  • Ελληνικά
  • English
  • Español
  • Euskara
  • فارسی
  • Fulfulde
  • Suomi
  • Na Vosa Vakaviti
  • Føroyskt
  • Français
  • Nordfriisk
  • Gaeilge
  • Gàidhlig
  • Galego
  • گیلکی
  • गोंयची कोंकणी / Gõychi Konknni
  • Bahasa Hulontalo
  • ગુજરાતી
  • Hausa
  • 客家語 / Hak-kâ-ngî
  • עברית
  • हिन्दी
  • Hrvatski
  • Magyar
  • Հայերեն
  • Արեւմտահայերէն
  • Bahasa Indonesia
  • Ilokano
  • Íslenska
  • İtaliano
  • 日本語
  • Jawa
  • ქართული
  • Qaraqalpaqsha
  • Taqbaylit
  • Kongo
  • Kumoring
  • Gĩkũyũ
  • ភាសាខ្មែរ
  • ಕನ್ನಡ
  • 한국어
  • Kurdî
  • Кыргызча
  • Luganda
  • Ligure
  • Ladin
  • ລາວ
  • Lietuvių
  • Latgaļu
  • Latviešu
  • Madhurâ
  • मैथिली
  • Мокшень
  • Македонски
  • മലയാളം
  • Монгол
  • ꯃꯤꯇꯩ ꯂꯣꯟ
  • ဘာသာမန်
  • मराठी
  • Bahasa Melayu
  • Malti
  • Mirandés
  • မြန်မာဘာသာ
  • مازِرونی
  • नेपाली
  • नेपाल भाषा
  • Norsk bokmål
  • Sesotho sa Leboa
  • Chi-Chewa
  • Occitan
  • ଓଡ଼ିଆ
  • ਪੰਜਾਬੀ
  • Pangasinan
  • Polski
  • پنجابی
  • Ποντιακά
  • پښتو
  • Português
  • Română
  • Tarandíne
  • Руски
  • Русский
  • संस्कृतम्
  • ᱥᱟᱱᱛᱟᱲᱤ
  • Scots
  • سنڌي
  • Srpskohrvatski / српскохрватски
  • တႆး
  • සිංහල
  • Simple English
  • Slovenščina
  • Gagana Samoa
  • Anarâškielâ
  • ChiShona
  • Soomaaliga
  • Shqip
  • Српски / srpski
  • Sunda
  • Svenska
  • Kiswahili
  • தமிழ்
  • ᥖᥭᥰ ᥖᥬᥲ ᥑᥨᥒᥰ
  • తెలుగు
  • Tetun
  • ไทย
  • ትግርኛ
  • Türkmençe
  • Tagalog
  • Татарча / tatarça
  • ChiTumbuka
  • Українська
  • اردو
  • Oʻzbekcha / ўзбекча
  • Vèneto
  • Tiếng Việt
  • Volapük
  • Winaray
  • Хальмг
  • მარგალური
  • Yorùbá
  • ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ
  • 中文
  • 文言
  • 閩南語 / Bân-lâm-gí
  • 粵語
  • İsiZulu
Bağlantıları değiştir
  • Modül
  • Tartışma
  • Oku
  • Kaynağı gör
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Kaynağı gör
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • MediaWiki
  • Meta Viki
  • Vikiveri ögesi
Görünüm
Page korumaya alındı
Vikipedi, özgür ansiklopedi
Modül belgelemesi[gör] [değiştir] [geçmiş] [temizle]
Lua'nın logosuBu modül şu Lua modüllerini kullanıyor:
  • Modül:Bağımsız değişkenler
  • Modül:Ülkeler
Çok fazla sayfada kullanılan bu modül korumaya alınmıştır. Vandalizm veya istem dışı hatalar pek çok sayfayı etkileyeceğinden ve en ufak düzenleme bile sunuculara önemli bir yük bindirebileceğinden korumaya tabidir.
UyarıBu Lua modülü yaklaşık 578.000 sayfada kullanılmaktadır.
Lütfen yapacağınız değişiklikleri büyük ölçekli aksamaları ve sunucuya gereksiz yük binmesini önlemek için öncelikle şablonun deneme tahtası ile test senaryosu alt sayfalarında ya da kendi kullanıcı sayfanızda test ediniz. Testten geçen değişiklikler daha sonra bu sayfaya tek bir düzenlemede eklenebilir. Eğer yapmayı planladığınız değişiklikler ile istediğiniz sonucu elde edemiyorsanız tartışma sayfasında görüş alışverişinde bulununuz.

Kullanımı

Bu modül {{Konum haritası}} ve {{Konum haritası~}} şablonlarını çalıştırır. Kullanım talimatları için lütfen şablonların belgelemelerine bakın.

İzleme/bakım kategorileri

  • Kategori:Konum haritaları ile olası hataları (24)

Tüm haritalar

  • Tüm haritalar

Ayrıca bakınız

  • Modül:Konum haritası/bilgi
  • Modül:Konum haritası/çoklu
Yukarıdaki belgeleme içeriği Modül:Konum haritası/belge sayfasından yansıtılmaktadır. (değiştir | geçmiş)
Kullanıcılar denemelerini bu şablonun deneme tahtası (değiştir | fark) ve test senaryosu (oluştur) sayfalarında yapabilirler.
Lütfen kategorileri /belge alt sayfasına ekleyin. Bu modül ile ilgili alt sayfalar için buraya tıklayınız.
require('strict')

local p = {}

local getArgs = require('Modül:Bağımsız değişkenler').getArgs
local ulkeler = require("Modül:Ülkeler").ulkeler

local function round(n, decimals)
	local pow = 10^(decimals or 0)
	return math.floor(n * pow + 0.5) / pow
end

function p.getTurkishParams(args)
	--Türkçe parametreleri tanıtalım
	args.width = args['genişlik'] or args.width
	args.default_width = args['varsayılan_genişlik'] or args.default_width
	args.float = args['pozisyon'] or args.float
	args.border = args['kontur'] or args.border
	args.caption = args['altyazı'] or args.caption
	args.relief = args['rölyef'] or args.relief
	args.AlternativeMap = args['alternatif_harita'] or args.AlternativeMap
	args.overlay_image = args['bindirilen_resim'] or args.overlay_image
	args.label = args['etiket'] or args['etiket1'] or args.label
	args.label_size = args['etiket_boyutu'] or args['etiket1_boyutu'] or args.label_size
	args.label_width = args['etiket_genişlik'] or args['etiket1_genişlik'] or args.label_width
	args.position = args['etiket_konumu'] or args['etiket1_konumu'] or args.position
	args.background = args['arkaplan'] or args['arkaplan1'] or args.background
	args.mark = args['işaret'] or args['işaret1'] or args.mark
	args.marksize = args['işaret_boyutu'] or args['işaret1_boyutu'] or args.marksize
	args.link = args['bağ'] or args['bağ1'] or args.link
	args.lat = args['enlem'] or args['enlem1'] or args.lat
	args.long = args['boylam'] or args['boylam1'] or args.long
	args.lat_deg = args['enlem_der'] or args['enlem1_der'] or args.lat_deg
	args.lat_min = args['enlem_dak'] or args['enlem1_dak'] or args.lat_min
	args.lat_sec = args['enlem_san'] or args['enlem1_san'] or args.lat_sec
	args.lat_dir = args['enlem_dir'] or args['enlem1_dir'] or args.lat_dir
	args.lon_deg = args['boylam_der'] or args['boylam1_der'] or args.lon_deg
	args.lon_min = args['boylam_dak'] or args['boylam1_dak'] or args.lon_min
	args.lon_sec = args['boylam_san'] or args['boylam1_san'] or args.lon_sec
	args.lon_dir = args['boylam_dir'] or args['boylam1_dir'] or args.lon_dir
	args.outside = args['dışarıda'] or args.outside
	args.places = args['yerler'] or args.places
	args.coordinates = args['koordinatlar'] or args['koordinatlar1'] or args.coordinates
end

local function ulkeBul(harita)
	local sayfa = harita
	local s, d = sayfa, ""
	
	local function bulvedeg(yazi, bir, iki)
		return mw.ustring.sub( mw.ustring.gsub(yazi, bir, iki), 1, -1 )
	end
	
	for i=1,5 do
		if ulkeler[d] then
			break
		else
			d = d .. (d~="" and " " or "") .. bulvedeg(s, "%s.*", "")
			s = bulvedeg(s, "^[^%s]*%s*", "")
		end
	end
	
	return ulkeler[d] and bulvedeg(sayfa, d, ulkeler[d]) or sayfa
end

function p.getMapParams(map, frame)
	--ülke çevirici
	map = ulkeBul(map)
	
	if not map then
		error('Kullanılacak konum haritası tanımının adı belirtilmek zorundadır', 2)
	end
	local moduletitle = mw.title.new('Modül:Konum haritası/veri/' .. map)
	if not moduletitle then
		error(string.format('%q konum haritası tanımı için geçerli ad değil', map), 2)
	elseif moduletitle.exists then
		local mapData = mw.loadData('Modül:Konum haritası/veri/' .. map)
		return function(name, params)
			if name == nil then
				return 'Modül:Konum haritası/veri/' .. map
			elseif mapData[name] == nil then
				return ''
			elseif params then
				return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain()
			else
				return mapData[name]
			end
		end
	else
		return "-1"
		--error('Belirtilen konum haritası tanımı bulunamıyor. "Modül:Konum haritası/veri/' .. map .. '" mevcut değil', 2)
	end
end

function p.veri(frame, args, map)
	if not args then
		args = getArgs(frame, {frameOnly = true})
	end
	if not map then
		map = p.getMapParams(args[1], frame)
	end
	local params = {}
	for k,v in ipairs(args) do
		if k > 2 then
			params[k-2] = v
		end
	end
	return map(args[2], #params ~= 0 and params)
end

local hemisphereMultipliers = {
	boylam = { W = -1, w = -1, B = -1, b = -1, E = 1, e = 1, D = 1, d = 1 },
	enlem = { S = -1, s = -1, G = -1, g = -1, N = 1, n = 1, K = 1, k = 1 }
}

local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction)
	if decimal then
		if degrees then
			error('Desimal ve DDS dereceleri her iki ' .. direction .. ' için değer verilebilir', 2)
		elseif minutes then
			error('Dakikaya ' .. direction ..' için yalnızca DDS dereceleri ile değer verilebilir', 2)
		elseif seconds then
			error('Saniyeye ' .. direction ..' için yalnızca DDS dereceleri ile değer verilebilir', 2)
		elseif hemisphere then
			error('Bir yarımküreye ' .. direction ..' için yalnızca DDS dereceleri ile değer verilebilir', 2)
		end
		local retval = tonumber(decimal)
		if retval then
			return retval
		end
		error(direction .. ' için verilen değer ' .. decimal .. ' için geçerli değil', 2)
	elseif seconds and not minutes then
		error('Ayrıca ' .. direction .. ' için değer verilen dakika olmadan saniyeye değer verildi', 2)
	elseif not degrees then
		if minutes then
			error('Ayrıca ' .. direction .. ' için değer verilen derece olmadan dakikaya değer verildi', 2)
		elseif hemisphere then
			error('Ayrıca ' .. direction .. ' için değer verilen derece olmadan bir yarımküreye değer verildi', 2)
		end
		return nil
	end
	decimal = tonumber(degrees)
	if not decimal then
		error(direction .. ' için verilen değer ' .. degrees .. ' için geçerli değil', 2)
	elseif minutes and not tonumber(minutes) then
		error(direction .. ' için verilen değer ' .. minutes .. ' için geçerli değil', 2)
	elseif seconds and not tonumber(seconds) then
		error(direction .. ' için verilen değer ' .. seconds .. ' için geçerli değil', 2)
	end
	decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600
	if hemisphere then
		local multiplier = hemisphereMultipliers[direction][hemisphere]
		if not multiplier then
			error(direction .. ' için verilen değer ' .. hemisphere .. ' için geçerli değil', 2)
		end
		decimal = decimal * multiplier
	end
	return decimal
end

-- Finds a parameter in a transclusion of {{Coord}}.
local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign
	local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NSKG] %-?[%.%d]+°[EWDB]') or '', '[ °]')
	if para == 'boylam' then result = {result[3], result[4]} end
	if not tonumber(result[1]) or not result[2] then return error('Hatalı koordinat değerleri', 2) end
	return tonumber(result[1]) * hemisphereMultipliers[para][result[2]]
end

-- effectively make removeBlanks false for caption and maplink, and true for everything else
-- if useWikidata is present but blank, convert it to false instead of nil
-- p.top, p.bottom, and their callers need to use this
function p.valueFunc(key, value)
	if value then
		value = mw.text.trim(value)
	end
	if value ~= '' or key == 'caption' or key == 'maplink' then
		return value
	elseif key == 'useWikidata' then
		return false
	end
end

local function getContainerImage(args, map)
	if args.AlternativeMap then
		return args.AlternativeMap
	elseif args.relief and map('resim1') ~= '' then
		return map('resim1')
	else
		return map('resim')
	end
end

function p.top(frame, args, map)
	if not args then
		args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
	end
	if not map then
		map = p.getMapParams(args[1], frame)
	end
	local width
	local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*"))
	if not args.width then
		width = round((default_as_number or 240) * (tonumber(map('varsayılan_ölçü')) or 1))
	elseif mw.ustring.sub(args.width, -2) == 'px' then
		width = mw.ustring.sub(args.width, 1, -3)
	else
		width = args.width
	end
	local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
    if width_as_number == 0 then
    	-- check to see if width is junk. If it is, then use default calculation
    	width = round((default_as_number or 240) * (tonumber(map('varsayılan_ölçü')) or 1))
    	width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
    end	
    if args.max_width ~= "" and args.max_width ~= nil then
        -- check to see if width bigger than max_width
        local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0;
        if width_as_number>max_as_number and max_as_number>0 then
            width = args.max_width;
        end
    end
	local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Şablon:Konum haritası/stiller.css'}}
	if args.float == 'center' then
		retval = retval .. '<div class="center">'
	end
	if args.caption and args.caption ~= '' and args.border ~= 'infobox' then
		retval = retval .. '<div class="locmap noviewer thumb '
		if args.float == '"left"' or args.float == 'left' then
			retval = retval .. 'tleft'
		elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then
			retval = retval .. 'tnone'
		else
			retval = retval .. 'tright'
		end
		retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px'
		if args.border == 'none' then
			retval = retval .. ';border:none'
		elseif args.border then
			retval = retval .. ';border-color:' .. args.border
		end
		retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">')
	else
		retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;'
		if args.float == '"left"' or args.float == 'left' then
			retval = retval .. 'float:left;clear:left'
		elseif args.float == '"center"' or args.float == 'center' then
			retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto'
		elseif args.float == '"none"' or args.float == 'none' then
			retval = retval .. 'float:none;clear:none'
		else
			retval = retval .. 'float:right;clear:right'
		end
		retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">'
	end
	local image = getContainerImage(args, map)
	local currentTitle = mw.title.getCurrentTitle()
	retval = string.format(
		'%s[[Dosya:%s|%spx|%s%s]]',
		retval,
		image,
		width,
		args.alt or (map('ad') .. ' üzerinde ' .. (args.label or currentTitle.text)),
		args.maplink and ('|link=' .. args.maplink) or ''
	)
	if args.caption and args.caption ~= '' then
		if (currentTitle.namespace == 0) and mw.ustring.find(args.caption, '##') then
			retval = retval .. '[[Kategori:Pages using location map with a double number sign in the caption]]'
		end
	end
	if args.overlay_image then
		return retval .. '<div style="position:absolute;top:0;left:0">[[Dosya:' .. args.overlay_image .. '|' .. width .. 'px]]</div>'
	else
		return retval
	end
end

function p.bottom(frame, args, map)
	if not args then
		args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
	end
	if not map then
		map = p.getMapParams(args[1], frame)
	end
	local retval = '</div>'
	local currentTitle = mw.title.getCurrentTitle()
	if not args.caption or args.border == 'infobox' then
		if args.border then
			retval = retval .. '<div style="padding-top:0.2em">'
		else
			retval = retval .. '<div style="font-size:91%;padding-top:3px">'
		end
		retval = retval
		.. (args.caption or (args.label or currentTitle.text) .. ' (' .. map('ad') .. ')')
		.. '</div>'
	elseif args.caption ~= ''  then
		-- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image
		retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:Dosya:' .. getContainerImage(args, map) .. '| ]]</div>' .. args.caption .. '</div>'
	end

	if args.switcherLabel then
		retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>'
	elseif args.autoSwitcherLabel then
		retval = retval .. '<span class="switcher-label" style="display:none">' .. map('ad') .. ' haritasında göster</span>'
	end
	
	retval = retval .. '</div></div>'
	if args.caption_undefined then
		mw.log('Silinen caption_undefined parametresi kullanıldı.')
		local parent = frame:getParent()
		if parent then
			mw.log('Parent is ' .. parent:getTitle())
		end
		mw.logObject(args, 'args')
		if currentTitle.namespace == 0 then
		    retval = retval .. '[[Kategori:Konum haritaları ile olası hataları|Sayfa parametresi kullanılarak kaldırılanlar]]'
		end
	end
	if map('eğri') ~= '' or map('enlem_eğri') ~= '' or map('çakışma180') ~= '' or map('tip') ~= '' then
		mw.log('Removed parameter used in map definition ' .. map())
		if currentTitle.namespace == 0 then
		    local key = (map('eğri') ~= '' and 'eğri' or '') ..
					(map('enlem_eğri') ~= '' and 'enlem_eğri' or '') ..
					(map('çakışma180') ~= '' and 'çakışma180' or '') ..
					(map('tip') ~= '' and 'tip' or '')
		    retval = retval .. '[[Kategori:Konum haritaları ile olası hataları|' .. key .. ' ]]'
		end
	end
	if string.find(map('ad'), '|', 1, true) then
		mw.log('Pipe used in name of map definition ' .. map())
		if currentTitle.namespace == 0 then
		   retval = retval .. '[[Kategori:Konum haritaları ile olası hataları|Adı içeren boru]]'
		end
	end
	if args.float == 'center' then
		retval = retval .. '</div>'
	end
	return retval
end

local function markOuterDiv(x, y, imageDiv, labelDiv)
	return mw.html.create('div')
		:addClass('od')
		:cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%')
		:node(imageDiv)
		:node(labelDiv)
end

local function markImageDiv(mark, marksize, label, link, alt, title)
	local builder = mw.html.create('div')
		:addClass('id')
		:cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px')
		:attr('title', title)
	if marksize ~= 0 then
		builder:wikitext(string.format(
			'[[File:%s|%dx%dpx|%s|link=%s%s]]',
			mark,
			marksize,
			marksize,
			label,
			link,
			alt and ('|alt=' .. alt) or ''
		))
	end
	return builder
end

local function markLabelDiv(label, label_size, label_width, position, background, x, marksize)
	if tonumber(label_size) == 0 then
		return mw.html.create('div'):addClass('l0'):wikitext(label)
	end
	local builder = mw.html.create('div')
		:cssText('font-size:' .. label_size .. '%;width:' .. label_width .. 'em')
	local distance = round(marksize / 2 + 1)
	if position == 'top' then -- specified top
		builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
	elseif position == 'bottom' then -- specified bottom
		builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
	elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left
		builder:addClass('pl'):cssText('right:' .. distance .. 'px')
	else -- specified right or autodetected to right
		builder:addClass('pr'):cssText('left:' .. distance .. 'px')
	end
	builder = builder:tag('div')
		:wikitext(label)
	if background then
		builder:cssText('background-color:' .. background)
	end
	return builder:done()
end

local function getX(longitude, left, right)
	if longitude == nil then return 0 end
	
	local width = (right - left) % 360
	if width == 0 then
		width = 360
	end
	local distanceFromLeft = (longitude - left) % 360
	-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter
	if distanceFromLeft - width / 2 >= 180 then
		distanceFromLeft = distanceFromLeft - 360
	end
	return 100 * distanceFromLeft / width
end

local function getY(latitude, top, bottom)
	if latitude == nil then return 0 end
	
	return 100 * (top - latitude) / (top - bottom)
end

function p.mark(frame, args, map)
	if not args then
		args = getArgs(frame, {wrappers = 'Şablon:Konum haritası~'})
	end
	local mapnames = {}
	p.getTurkishParams(args)
	if not map then
		if args[1] then
			map = {}
			for mapname in mw.text.gsplit(args[1], '#', true) do
				map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
				mapnames[#mapnames + 1] = mapname
			end
			if #map == 1 then map = map[1] end
		else
			map = p.getMapParams('Dünya', frame)
			args[1] = 'Dünya'
		end
	end
	if type(map) == 'table' then
		local outputs = {}
		local oldargs = args[1]
		for k,v in ipairs(map) do
			args[1] = mapnames[k]
			outputs[k] = tostring(p.mark(frame, args, v))
		end
		args[1] = oldargs
		return table.concat(outputs, '#PlaceList#') .. '#PlaceList#'
	end
	local x, y, longitude, latitude
	longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'boylam')
	latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'enlem')
	if args.excludefrom then
		-- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps)
		for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do
			-- Check if this map is excluded. If so, return an empty string.
			if args[1] == exclusionmap then
				return ''
			end
		end
			
	end
	local builder = mw.html.create()
	local currentTitle = mw.title.getCurrentTitle()
	if args.coordinates then
--		Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]]

--		if longitude or latitude then
--			error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided')
--		end
		longitude = coord2text('boylam', args.coordinates)
		latitude = coord2text('enlem', args.coordinates)
	elseif not longitude and not latitude and args.useWikidata then
		-- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't.
		local entity = mw.wikibase.getEntity()
		if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then
			local value = entity.claims.P625[1].mainsnak.datavalue.value
			longitude, latitude = value.longitude, value.latitude
		end
		if args.link and (currentTitle.namespace == 0) then
			builder:wikitext("[[Kategori:Vikiveri'den koordinat çeken konum haritaları]]")	
		end
	end
	
	if not args.useWikidata then
		if not longitude then
			error('Boylam değeri saptanamadı')
		elseif not latitude then
			error('Enlem değeri saptanamadı')
		end
	end
	if currentTitle.namespace > 0 then
		if (not args.lon_deg) ~= (not args.lat_deg) then
			builder:wikitext('[[Kategori:Konum haritaları ile farklı enlem ve boylam presizyonları|Derece]]')
		elseif (not args.lon_min) ~= (not args.lat_min) then
			builder:wikitext('[[Kategori:Konum haritaları ile farklı enlem ve boylam presizyonları|Dakika]]')
		elseif (not args.lon_sec) ~= (not args.lat_sec) then
			builder:wikitext('[[Kategori:Konum haritaları ile farklı enlem ve boylam presizyonları|Saniye]]')
		elseif (not args.lon_dir) ~= (not args.lat_dir) then
			builder:wikitext('[[Kategori:Konum haritaları ile farklı enlem ve boylam presizyonları|Yarımküre]]')
		elseif (not args.long) ~= (not args.lat) then
			builder:wikitext('[[Kategori:Konum haritaları ile farklı enlem ve boylam presizyonları|Desimal]]')
		end
	end
	if args.skew or args.lon_shift or args.markhigh then
		mw.log('Silinen parametre çağrıda kullanıldı.')
		local parent = frame:getParent()
		if parent then
			mw.log('Temel ' .. parent:getTitle())
		end
		mw.logObject(args, 'args')
		if currentTitle.namespace == 0 then
			local key = (args.skew and 'eğri' or '') ..
						(args.lon_shift and 'lon_shift' or '') ..
						(args.markhigh and 'markhigh' or '')
			builder:wikitext('[[Kategori:Konum haritaları ile olası hataları|' .. key ..' ]]')
		end
	end
	if map('x') ~= '' then
		x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude })))
	else
		x = tonumber(getX(longitude, map('sol'), map('sağ')))
	end
	if map('y') ~= '' then
		y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude })))
	else
		y = tonumber(getY(latitude, map('üst'), map('alt')))
	end
	if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then
		mw.log('İşaret, dış bayrak koyulmadan dış harita sınırlarına yerleştirildi. x = ' .. x .. ', y = ' .. y)
		local parent = frame:getParent()
		if parent then
			mw.log('Parent is ' .. parent:getTitle())
		end
		mw.logObject(args, 'args')
		if currentTitle.namespace == 0 then
			local key = currentTitle.prefixedText
			builder:wikitext('[[Kategori:Konum haritaları ile olası hataları|' .. key .. ' ]]')
		end
	end
	local mark = args.mark or map('işaret')
	if mark == '' then
		mark = 'Red pog.svg'
	end
	local marksize = tonumber(args.marksize) or tonumber(map('işaret_boyutu')) or 8
	local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2])
	local labelDiv
	if args.label and args.position ~= 'none' then
		labelDiv = markLabelDiv(args.label, args.label_size or 91, args.label_width or 6, args.position, args.background, x, marksize)
	end
	return builder:node(markOuterDiv(x, y, imageDiv, labelDiv))
end

local function switcherSeparate(s)
	if s == nil then return {} end
	local retval = {}
	for i in string.gmatch(s .. '#', '([^#]*)#') do
		i = mw.text.trim(i)
		retval[#retval + 1] = (i ~= '' and i)
	end
	return retval
end

function p.main(frame, args, map)
	local caption_list = {}
	if not args then
		args = getArgs(frame, {wrappers = 'Şablon:Konum haritası', valueFunc = p.valueFunc})
	end
	if args.useWikidata == nil then
		args.useWikidata = true
	end
	
	p.getTurkishParams(args)
	
	if not map then
		if args[1] then
			map = {}
			for mapname in string.gmatch(args[1], '[^#]+') do
				local val = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
				if val ~= '-1'
				then
				    map[#map + 1] = val
				end
			end
			if args['caption'] then
				if args['caption'] == "" then
					while #caption_list < #map do
						caption_list[#caption_list + 1] = args['caption']
					end
				else
					for caption in mw.text.gsplit(args['caption'], '##', true) do
						caption_list[#caption_list + 1] = caption
					end
				end
			end
			if #map == 1 then map = map[1] end
		else
			map = p.getMapParams('Dünya', frame)
		end
	end
	if type(map) == 'table' then
		local altmaps = switcherSeparate(args.AlternativeMap)
		if #altmaps > #map then
			error(string.format('%d alternatif_harita girildi, ama sadece %d haritalar sağlandı', #altmaps, #map))
		end
		local overlays = switcherSeparate(args.overlay_image)
		if #overlays > #map then
			error(string.format('%d bindirilen_resim girildi, ama sadece %d haritalar sağlandı', #overlays, #map))
		end
		if #caption_list > #map then
			error(string.format('%d altyazılar girildi, ama sadece %d haritalar sağlandı', #caption_list, #map))
		end
		local outputs = {}
		args.autoSwitcherLabel = true
		for k,v in ipairs(map) do
			args.AlternativeMap = altmaps[k]
			args.overlay_image = overlays[k]
			args.caption = caption_list[k]
			outputs[k] = p.main(frame, args, v)
		end
		return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
	else
		return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map)
	end
end

return p
"https://tr.wikipedia.org/w/index.php?title=Modül:Konum_haritası&oldid=36004780" sayfasından alınmıştır
Kategoriler:
  • Korumaya alınmış modüller
  • İzleme kategorisi ekleyen modüller
  • Sayfa en son 19.20, 10 Eylül 2025 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
Modül:Konum haritası
Konu ekle