CINXE.COM
Xem mã nguồn của Mô đun:Coordinates – Wikipedia tiếng Việt
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-disabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-not-available" lang="vi" dir="ltr"> <head> <meta charset="UTF-8"> <title>Xem mã nguồn của Mô đun:Coordinates – Wikipedia tiếng Việt</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-disabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-not-available";var cookie=document.cookie.match(/(?:^|; )viwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":true,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat": "dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"f2d96172-00f3-4855-9f26-db4c56b1bafb","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Mô_đun:Coordinates","wgTitle":"Coordinates","wgCurRevisionId":71922218,"wgRevisionId":0,"wgArticleId":1744146,"wgIsArticle":false,"wgIsRedirect":false,"wgAction":"edit","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"Scribunto","wgRelevantPageName":"Mô_đun:Coordinates","wgRelevantArticleId":1744146,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["sysop"],"wgRestrictionMove":["sysop"],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{ "pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":30000,"wgCodeEditorCurrentLanguage":"lua","wgRelatedArticlesCompat":[],"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.gadget.charinsert-styles":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading", "ext.codeEditor.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","mediawiki.ui.button":"ready","ext.charinsert.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.codeEditor","ext.scribunto.edit","mediawiki.action.edit.collapsibleFooter","site","mediawiki.page.ready","skins.vector.js","ext.centralNotice.geoIP","ext.charinsert","ext.gadget.did_you_mean","ext.gadget.ReferenceTooltips","ext.gadget.AVIM","ext.gadget.AVIM_portlet","ext.gadget.charinsert","ext.gadget.refToolbar","ext.gadget.wikibugs","ext.gadget.purgetab","ext.gadget.switcher","ext.gadget.AdvancedSiteNotices","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging", "ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=vi&modules=ext.charinsert.styles%7Cext.codeEditor.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cmediawiki.ui.button%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=vi&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=vi&modules=ext.gadget.charinsert-styles&only=styles&skin=vector-2022"> <link rel="stylesheet" href="/w/load.php?lang=vi&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.5"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="noindex,nofollow,max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Xem mã nguồn của Mô đun:Coordinates – Wikipedia tiếng Việt"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//vi.m.wikipedia.org/wiki/M%C3%B4_%C4%91un:Coordinates"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (vi)"> <link rel="EditURI" type="application/rsd+xml" href="//vi.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://vi.wikipedia.org/wiki/M%C3%B4_%C4%91un:Coordinates"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.vi"> <link rel="alternate" type="application/atom+xml" title="Nguồn cấp Atom của Wikipedia" href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Thay_%C4%91%E1%BB%95i_g%E1%BA%A7n_%C4%91%C3%A2y&feed=atom"> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="codeeditor-loading skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject page-Mô_đun_Coordinates rootpage-Mô_đun_Coordinates skin-vector-2022 action-edit"><a class="mw-jump-link" href="#bodyContent">Bước tới nội dung</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Trang Web"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Trình đơn chính" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Trình đơn chính</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Trình đơn chính</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">chuyển sang thanh bên</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">ẩn</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Điều hướng </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Trang_Ch%C3%ADnh" title="Xem trang chính [z]" accesskey="z"><span>Trang Chính</span></a></li><li id="n-wikipedia-featuredcontent" class="mw-list-item"><a href="/wiki/C%E1%BB%95ng_th%C3%B4ng_tin:N%E1%BB%99i_dung_ch%E1%BB%8Dn_l%E1%BB%8Dc"><span>Nội dung chọn lọc</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Ng%E1%BA%ABu_nhi%C3%AAn" title="Xem trang ngẫu nhiên [x]" accesskey="x"><span>Bài viết ngẫu nhiên</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Thay_%C4%91%E1%BB%95i_g%E1%BA%A7n_%C4%91%C3%A2y" title="Danh sách thay đổi gần đây trong wiki [r]" accesskey="r"><span>Thay đổi gần đây</span></a></li><li id="n-bug_in_article" class="mw-list-item"><a href="/wiki/Wikipedia:B%C3%A1o_l%E1%BB%97i_b%C3%A0i_vi%E1%BA%BFt"><span>Báo lỗi nội dung</span></a></li> </ul> </div> </div> <div id="p-wikipedia-interaction" class="vector-menu mw-portlet mw-portlet-wikipedia-interaction" > <div class="vector-menu-heading"> Tương tác </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-wikipedia-helppage" class="mw-list-item"><a href="/wiki/Wikipedia:S%C3%A1ch_h%C6%B0%E1%BB%9Bng_d%E1%BA%ABn"><span>Hướng dẫn</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:Gi%E1%BB%9Bi_thi%E1%BB%87u"><span>Giới thiệu Wikipedia</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:C%E1%BB%99ng_%C4%91%E1%BB%93ng" title="Giới thiệu dự án, cách sử dụng và tìm kiếm thông tin ở đây"><span>Cộng đồng</span></a></li><li id="n-wikipedia-villagepump" class="mw-list-item"><a href="/wiki/Wikipedia:Th%E1%BA%A3o_lu%E1%BA%ADn"><span>Thảo luận chung</span></a></li><li id="n-wikipedia-helpdesk" class="mw-list-item"><a href="/wiki/Wikipedia:Gi%C3%BAp_s%E1%BB%AD_d%E1%BB%A5ng_Wikipedia"><span>Giúp sử dụng</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//vi.wikipedia.org/wiki/Wikipedia:Liên_lạc"><span>Liên lạc</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:Tr%C3%ACnh_t%E1%BA%A3i_l%C3%AAn_t%E1%BA%ADp_tin"><span>Tải lên tập tin</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Trang_Ch%C3%ADnh" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="Bách khoa toàn thư mở" src="/static/images/mobile/copyright/wikipedia-tagline-vi.svg" width="120" height="10" style="width: 7.5em; height: 0.625em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:T%C3%ACm_ki%E1%BA%BFm" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Tìm kiếm Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Tìm kiếm</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Tìm kiếm trên Wikipedia" aria-label="Tìm kiếm trên Wikipedia" autocapitalize="sentences" title="Tìm kiếm Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Đặc_biệt:Tìm_kiếm"> </div> <button class="cdx-button cdx-search-input__end-button">Tìm kiếm</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Công cụ cá nhân"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Giao diện"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Giao diện" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Giao diện</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_vi.wikipedia.org&uselang=vi" class=""><span>Quyên góp</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:M%E1%BB%9F_t%C3%A0i_kho%E1%BA%A3n&returnto=M%C3%B4+%C4%91un%3ACoordinates&returntoquery=action%3Dedit" title="Bạn được khuyến khích mở tài khoản và đăng nhập; tuy nhiên, không bắt buộc phải có tài khoản" class=""><span>Tạo tài khoản</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C4%83ng_nh%E1%BA%ADp&returnto=M%C3%B4+%C4%91un%3ACoordinates&returntoquery=action%3Dedit" title="Đăng nhập sẽ có lợi hơn, tuy nhiên không bắt buộc. [o]" accesskey="o" class=""><span>Đăng nhập</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Thêm tùy chọn" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Công cụ cá nhân" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Công cụ cá nhân</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="Bảng chọn thành viên" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_vi.wikipedia.org&uselang=vi"><span>Quyên góp</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:M%E1%BB%9F_t%C3%A0i_kho%E1%BA%A3n&returnto=M%C3%B4+%C4%91un%3ACoordinates&returntoquery=action%3Dedit" title="Bạn được khuyến khích mở tài khoản và đăng nhập; tuy nhiên, không bắt buộc phải có tài khoản"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Tạo tài khoản</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C4%83ng_nh%E1%BA%ADp&returnto=M%C3%B4+%C4%91un%3ACoordinates&returntoquery=action%3Dedit" title="Đăng nhập sẽ có lợi hơn, tuy nhiên không bắt buộc. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Đăng nhập</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Trang dành cho người dùng chưa đăng nhập <a href="/wiki/Tr%E1%BB%A3_gi%C3%BAp:Gi%E1%BB%9Bi_thi%E1%BB%87u" aria-label="Tìm hiểu thêm về sửa đổi"><span>tìm hiểu thêm</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C3%B3ng_g%C3%B3p_c%E1%BB%A7a_t%C3%B4i" title="Danh sách các sửa đổi được thực hiện qua địa chỉ IP này [y]" accesskey="y"><span>Đóng góp</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Th%E1%BA%A3o_lu%E1%BA%ADn_t%C3%B4i" title="Thảo luận với địa chỉ IP này [n]" accesskey="n"><span>Thảo luận cho địa chỉ IP này</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Trang Web"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <h1 id="firstHeading" class="firstHeading mw-first-heading">Xem mã nguồn của Mô đun:Coordinates</h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Bài viết này chỉ tồn tại bằng ngôn ngữ này. Thêm bài viết cho các ngôn ngữ khác" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-0" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">Thêm ngôn ngữ</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="uls-after-portlet-link"></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Không gian tên"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-module" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/M%C3%B4_%C4%91un:Coordinates" title="Xem mô đun [c]" accesskey="c"><span>Mô đun</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Th%E1%BA%A3o_lu%E1%BA%ADn_M%C3%B4_%C4%91un:Coordinates" rel="discussion" title="Thảo luận về trang này [t]" accesskey="t"><span>Thảo luận</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Thay đổi biến thể ngôn ngữ" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Giao diện"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="vector-tab-noicon mw-list-item"><a href="/wiki/M%C3%B4_%C4%91un:Coordinates"><span>Đọc</span></a></li><li id="ca-viewsource" class="selected vector-tab-noicon mw-list-item"><a href="/w/index.php?title=M%C3%B4_%C4%91un:Coordinates&action=edit" title="Trang này được khóa. Bạn có thể xem mã nguồn. [e]" accesskey="e"><span>Xem mã nguồn</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=M%C3%B4_%C4%91un:Coordinates&action=history" title="Các phiên bản cũ của trang này [h]" accesskey="h"><span>Xem lịch sử</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Công cụ trang"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Công cụ" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Công cụ</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Công cụ</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">chuyển sang thanh bên</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">ẩn</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="Thêm tùy chọn" > <div class="vector-menu-heading"> Tác vụ </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="vector-more-collapsible-item mw-list-item"><a href="/wiki/M%C3%B4_%C4%91un:Coordinates"><span>Đọc</span></a></li><li id="ca-more-viewsource" class="selected vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=M%C3%B4_%C4%91un:Coordinates&action=edit"><span>Xem mã nguồn</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=M%C3%B4_%C4%91un:Coordinates&action=history"><span>Xem lịch sử</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> Chung </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Li%C3%AAn_k%E1%BA%BFt_%C4%91%E1%BA%BFn_%C4%91%C3%A2y/M%C3%B4_%C4%91un:Coordinates" title="Các trang liên kết đến đây [j]" accesskey="j"><span>Các liên kết đến đây</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Thay_%C4%91%E1%BB%95i_li%C3%AAn_quan/M%C3%B4_%C4%91un:Coordinates" rel="nofollow" title="Thay đổi gần đây của các trang liên kết đến đây [k]" accesskey="k"><span>Thay đổi liên quan</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Trang_%C4%91%E1%BA%B7c_bi%E1%BB%87t" title="Một danh sách chứa tất cả trang đặc biệt [q]" accesskey="q"><span>Trang đặc biệt</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=M%C3%B4_%C4%91un:Coordinates&action=info" title="Thêm chi tiết về trang này"><span>Thông tin trang</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:UrlShortener&url=https%3A%2F%2Fvi.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DM%25C3%25B4_%25C4%2591un%3ACoordinates%26action%3Dedit"><span>Lấy URL ngắn gọn</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:QrCode&url=https%3A%2F%2Fvi.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DM%25C3%25B4_%25C4%2591un%3ACoordinates%26action%3Dedit"><span>Tải mã QR</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> Tại dự án khác </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q7348344" title="Liên kết đến khoản mục kết nối trong kho dữ liệu [g]" accesskey="g"><span>Khoản mục Wikidata</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Công cụ trang"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Giao diện"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Giao diện</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">chuyển sang thanh bên</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">ẩn</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> </div> <div id="contentSub"><div id="mw-content-subtitle">← <a href="/wiki/M%C3%B4_%C4%91un:Coordinates" title="Mô đun:Coordinates">Mô đun:Coordinates</a></div></div> <div id="mw-content-text" class="mw-body-content"><p>Bạn không được quyền sửa đổi trang này, vì các lý do sau: </p> <ul class="permissions-errors"><li class="mw-permissionerror-protectedpagetext"><div class="mw-parser-output"><style data-mw-deduplicate="TemplateStyles:r69621137">.mw-parser-output .pptext-whywhat h2{margin-top:1em;border-bottom:0;font-size:130%;font-weight:bold;padding:0.15em}.mw-parser-output .pptext-submit{list-style:none;display:inline;text-align:center}.mw-parser-output .pptext-whywhat{display:flex;flex-wrap:wrap;column-gap:2em}.mw-parser-output .pptext-whywhat>div{flex:1 1 400px}</style><table id="mw-protectedpagetext" class="plainlinks fmbox fmbox-system" role="presentation" style="border-style:none;"><tbody><tr><td class="mbox-text"><table class="plainlinks ombox ombox-protection" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/1/12/Full-protection-shackle-block.svg/40px-Full-protection-shackle-block.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/12/Full-protection-shackle-block.svg/60px-Full-protection-shackle-block.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/12/Full-protection-shackle-block.svg/80px-Full-protection-shackle-block.svg.png 2x" data-file-width="512" data-file-height="512" /></span></span></td><td class="mbox-text" style="font-weight:bold; font-size:130%;">Trang này đang bị <a href="/wiki/Wikipedia:Quy_%C4%91%E1%BB%8Bnh_kh%C3%B3a_trang#full" title="Wikipedia:Quy định khóa trang">khóa</a>, chỉ có các <a href="/wiki/Wikipedia:B%E1%BA%A3o_qu%E1%BA%A3n_vi%C3%AAn" title="Wikipedia:Bảo quản viên">bảo quản viên</a> mới có thể sửa đổi trang.</td></tr></tbody></table> <div class="pptext-whywhat"> <div class="pptext-why"> <div class="mw-heading mw-heading2"><h2 id="Tại_sao_trang_này_bị_khóa?"><span id="T.E1.BA.A1i_sao_trang_n.C3.A0y_b.E1.BB.8B_kh.C3.B3a.3F"></span>Tại sao trang này bị khóa?</h2></div> <ul> <li>Mặc dù bạn có thể sửa đổi hầu hết các trang, tuy nhiên có một số <a href="/wiki/Wikipedia:B%E1%BA%A3n_m%E1%BA%ABu" class="mw-redirect" title="Wikipedia:Bản mẫu">bản mẫu</a> và trang giao diện bị <a href="/wiki/Wikipedia:Kh%C3%B3a_trang#Khóa_hẳn" class="mw-redirect" title="Wikipedia:Khóa trang">khóa hẳn</a> bởi vì chúng được sử dụng rất nhiều. Đôi khi các bài viết cũng được khóa tạm thời vì <a href="/wiki/Wikipedia:B%C3%BAt_chi%E1%BA%BFn" title="Wikipedia:Bút chiến">mâu thuẫn sửa đổi</a>.</li> <li>Lý do cụ thể của việc khóa trang có thể được tìm thấy trong <a class="external text" href="https://vi.wikipedia.org/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Log&type=protect&page=M%C3%B4+%C4%91un%3ACoordinates">nhật trình khóa</a>. Nếu không có mục nào liên quan trong nhật trình, trang này có thể đã bị <a class="external text" href="https://vi.wikipedia.org/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Log&type=move&page=M%C3%B4_%C4%91un:Coordinates">di chuyển</a> sau khi khóa. </li> </ul> </div> <div class="pptext-what"> <div class="mw-heading mw-heading2"><h2 id="Tôi_có_thể_làm_gì?"><span id="T.C3.B4i_c.C3.B3_th.E1.BB.83_l.C3.A0m_g.C3.AC.3F"></span>Tôi có thể làm gì?</h2></div> <ul> <li> <a href="/wiki/Th%E1%BA%A3o_lu%E1%BA%ADn_M%C3%B4_%C4%91un:Coordinates" title="Thảo luận Mô đun:Coordinates">Thảo luận về trang này</a> với người dùng khác.</li> <li> Nếu bạn muốn đổi tên trang đã bị khóa, hãy đề nghị tại <a href="/wiki/Wikipedia:Y%C3%AAu_c%E1%BA%A7u_di_chuy%E1%BB%83n_trang" title="Wikipedia:Yêu cầu di chuyển trang">yêu cầu di chuyển trang</a>.</li> <li> <a href="/wiki/Wikipedia:Y%C3%AAu_c%E1%BA%A7u_kh%C3%B3a_hay_m%E1%BB%9F_kh%C3%B3a_trang" title="Wikipedia:Yêu cầu khóa hay mở khóa trang">Yêu cầu mở khóa</a> trang này.</li> <li> Đây là lần đầu tiên bạn vào Wikipedia? Hãy xem qua trang <a href="/wiki/Wikipedia:Ch%C3%A0o_m%E1%BB%ABng_ng%C6%B0%E1%BB%9Di_m%E1%BB%9Bi_%C4%91%E1%BA%BFn" title="Wikipedia:Chào mừng người mới đến">chào mừng thành viên mới</a> để tìm hiểu thêm làm sao để bắt đầu sửa đổi trên Wikipedia.</li> <li>Nếu bạn nhận ra có sai sót hoặc muốn đề xuất một vài thay đổi đơn giản, không gây tranh cãi, hãy yêu cầu sửa trang bị khóa bằng cách bấm nút bên dưới và làm theo hướng dẫn. Một <a href="/wiki/Wikipedia:B%E1%BA%A3o_qu%E1%BA%A3n_vi%C3%AAn" title="Wikipedia:Bảo quản viên">bảo quản viên</a> sẽ xem xét và thực hiện yêu cầu sửa đổi đó của bạn. Hãy kiểm tra <a href="/wiki/Th%E1%BA%A3o_lu%E1%BA%ADn_M%C3%B4_%C4%91un:Coordinates" title="Thảo luận Mô đun:Coordinates">trang thảo luận</a> trước, có thể vấn đề bạn muốn đề xuất đang được bàn luận ở đó.</li> <li class="pptext-submit"><div> <p><span class="plainlinks"><a class="external text" href="https://vi.wikipedia.org/w/index.php?title=Th%E1%BA%A3o_lu%E1%BA%ADn_M%C3%B4_%C4%91un%3ACoordinates&preload=B%E1%BA%A3n+m%E1%BA%ABu%3AY%C3%AAu+c%E1%BA%A7u+s%E1%BB%ADa+trang+kh%C3%B3a%2Fpreload&action=edit&section=new&editintro=B%E1%BA%A3n+m%E1%BA%ABu%3AS%E1%BB%ADa+trang+kh%C3%B3a%2Feditintro&preloadtitle=Y%C3%AAu+c%E1%BA%A7u+s%E1%BB%ADa+trang+b%E1%BB%8B+kh%C3%B3a+h%E1%BA%B3n+ng%C3%A0y+1+th%C3%A1ng+12+n%C4%83m+2024&preloadparams%5B%5D=S%E1%BB%ADa+trang+kh%C3%B3a+h%E1%BA%B3n&preloadparams%5B%5D=M%C3%B4+%C4%91un%3ACoordinates"><span class="mw-ui-button mw-ui-progressive">Yêu cầu sửa trang này</span></a></span> </p> </div></li> <li>Nếu bạn đã viết bất kỳ thứ gì, vui lòng lưu nó tạm thời vào thiết bị của bạn cho đến khi bạn có thể sửa đổi trang này.</li> </ul> </div> </div></td></tr></tbody></table></div></li><li class="mw-permissionerror-globalblocking-blockedtext-range"><b>Your IP address is in a range that has been <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Global_blocks" class="extiw" title="m:Special:MyLanguage/Global blocks">blocked on all Wikimedia Foundation wikis</a>.</b> <p>The block was made by <a href="/wiki/Th%C3%A0nh_vi%C3%AAn:Jon_Kolbert" title="Thành viên:Jon Kolbert">Jon Kolbert</a>. The reason given is <i><a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/NOP" class="extiw" title="m:Special:MyLanguage/NOP">Open proxy/Webhost</a>: See the <a href="https://meta.wikimedia.org/wiki/WM:OP/H" class="extiw" title="m:WM:OP/H">help page</a> if you are affected </i>. </p> <ul><li>Start of block: 15:12, ngày 27 tháng 8 năm 2023</li> <li>Expiry of block: 15:12, ngày 27 tháng 8 năm 2028</li></ul> <p>Your current IP address is 8.222.208.146. The blocked range is 8.222.128.0/17. </p><p>Xin hãy cung cấp tất cả các thông tin trên vào thư yêu cầu của bạn. Nếu bạn bị cấm do sự nhầm lẫn, bạn có thể xem thêm thông tin và hướng dẫn tại quy định toàn cục <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/No_open_proxies" class="extiw" title="m:Special:MyLanguage/No open proxies">Không cho phép các proxy mở</a>. </p> Để thảo luận về vụ cấm này, xin vui lòng <a href="https://meta.wikimedia.org/wiki/Steward_requests/Global" class="extiw" title="m:Steward requests/Global">yêu cầu kiểm tra lại tại Meta-Wiki</a>. You could also send an email to the <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Stewards" class="extiw" title="m:Special:MyLanguage/Stewards">stewards</a> <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/VRT" class="extiw" title="m:Special:MyLanguage/VRT">VRT</a> queue at <kbd>stewards@wikimedia.org</kbd> including all above details.</li></ul><hr /> <div id="viewsourcetext">Bạn vẫn có thể xem và chép xuống mã nguồn của trang này:</div><textarea readonly="" accesskey="," id="wpTextbox1" cols="80" rows="25" style="" class="mw-editfont-monospace" lang="en" dir="ltr" name="wpTextbox1">--[=[ Mô đun này hỗ trợ [[Bản mẫu:Coord]] và các bản mẫu liên quan. Nó cung cấp vài phương thức, nhất là: {{#gọi:Coordinates | coord }} : Hàm tổng quát để định dạng và hiển thị các giá trị tọa độ. {{#gọi:Coordinates | dec2dms }} : Hàm đơn giản để chuyển đổi các giá trị thập phân ra định dạng độ-phút-giây. {{#gọi:Coordinates | dms2dec }} : Hàm đơn giản để chuyển đổi định dạng độ-phút-giây ra định dạng độ thập phân. {{#gọi:Coordinates | link }} : Xuất địa chỉ của các công cụ. ]=] require('strict') local math_mod = require("Module:Math") local coordinates = {}; local current_page = mw.title.getCurrentTitle() local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' ); local coord_link = '//tools.wmflabs.org/geohack/geohack.php?language=vi&pagename=' .. page_name .. '&params=' -- Định dạng các số theo quy tắc tiếng Việt (thí dụ 1.234,56). local lang = mw.getContentLanguage() -- Chuyển đổi đối số thành các giá trị tiếng Anh. local function delocalizeArguments(args) -- Chuyển vị bảng đối số local transposedArgs = {} for i, arg in ipairs(args) do transposedArgs[mw.ustring.upper(arg)] = i end if transposedArgs["B"] ~= nil then args[transposedArgs["B"]] = "N" end -- “N” có thể có nghĩa hướng nam trong tiếng Việt hoặc hướng bắc trong tiếng Anh. if transposedArgs["N"] ~= nil and (transposedArgs["Đ"] ~= nil or transposedArgs["T"] ~= nil) then args[transposedArgs["N"]] = "S" end if transposedArgs["Đ"] ~= nil then args[transposedArgs["Đ"]] = "E" end if transposedArgs["T"] ~= nil then args[transposedArgs["T"]] = "W" end end --[[ Hàm hỗ trợ thay thế {{coord/display/title}} ]] local function displaytitle(s, notes) local htmlTitle = '<span style="margin-right: 0.25rem;">' .. s .. notes .. '</span>'; return mw.getCurrentFrame():extensionTag('indicator', tostring(htmlTitle), { name = '#coordinates' }) end --[[ Hàm hỗ trợ thay thế {{coord/display/inline}} ]] local function displayinline(s, notes) return s .. notes end --[[ Hàm hỗ trợ được sử dụng để nhận ra định dạng độ-phút-giây. ]] local function dmsTest(first, second) if type(first) ~= 'string' or type(second) ~= 'string' then return nil end local s = mw.ustring.upper(first .. second) if s == "NE" or s == "NW" or s == "SE" or s == "SW" or s == "EN" or s == "WN" or s == "ES" or s == "WS" or s == "BĐ" or s == "BT" or s == "NĐ" or s == "TN" or s == "ĐB" or s == "TB" or s == "ĐN" or s == "NT" then return true end return false end --[[ Hàm bọc để lấy các tham số; xem tài liệu của hàm này tại Mô đun:Arguments. ]] local function makeInvokeFunc(funcName) return function (frame) local args = require('Mô đun:Arguments').getArgs(frame, { wrappers = 'Bản mẫu:Tọa độ' }) return coordinates[funcName](args, frame) end end --[[ Hàm hỗ trợ để xử lý các đối số tùy chọn. ]] local function optionalArg(arg, suplement) if arg ~= nil and arg ~= "" then return arg .. suplement end end --[[ Helper function, handle optional args. ]] local function optionalArg(arg, supplement) return arg and arg .. supplement or '' end --[[ Định dạng những thông báo lỗi cần hiển thị. ]] local function errorPrinter(errors) local result = "" for i,v in ipairs(errors) do local errorHTML = '<strong class="error">Tọa độ: ' .. v[2] .. '</strong>' result = result .. errorHTML .. "<br />" end return result end --[=[ Tính lớp CSS cần để hiển thị tọa độ. Bảng kiểu CSS thường ẩn geo-nondefault, trừ khi một nguời dùng đã ghi đè thiết lập này. default là chế độ do nguời dùng định rõ khi nhúng [[Bản mẫu:coord]]. mode là chế độ hiển thị (dec hoặc dms) dùng để tính lớp CSS. ]=] local function displayDefault(default, mode) if default == "" then default = "dec" end if default == mode then return "geo-default" else return "geo-nondefault" end end --[[ specPrinter Hàm định dạng giá trị cho ra. Lấy cấu trúc do parseDec hoặc parseDMS tạo ra và định dạng nó để nhúng vào Wikipedia. ]] local function specPrinter(args, coordinateSpec) local uriComponents = coordinateSpec["param"] if uriComponents == "" then -- RETURN error, should never be empty or nil return "LỖI tham số trống" end if args["name"] then uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"]) end local geodmshtml = '<span class="geo-dms" title="Bản đồ, không ảnh, cùng các dữ liệu khác cho vị trí này">' .. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> ' .. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>' .. '</span>' local lat = tonumber( coordinateSpec["dec-lat"] ) or 0 local geodeclat if lat < 0 then -- FIXME this breaks the pre-existing precision geodeclat = lang:formatNum(tonumber(coordinateSpec["dec-lat"]:sub(2))) .. "°N" else geodeclat = lang:formatNum(tonumber(coordinateSpec["dec-lat"] or 0)) .. "°B" end local long = tonumber( coordinateSpec["dec-long"] ) or 0 local geodeclong if long < 0 then -- FIXME does not handle unicode minus geodeclong = lang:formatNum(tonumber(coordinateSpec["dec-long"]:sub(2))) .. "°T" else geodeclong = lang:formatNum(tonumber(coordinateSpec["dec-long"] or 0)) .. "°Đ" end local geodechtml = '<span class="geo-dec" title="Bản đồ, không ảnh, cùng các dữ liệu khác cho vị trí này">' .. geodeclat .. ' ' .. geodeclong .. '</span>' local geonumhtml = '<span class="geo">' .. coordinateSpec["dec-lat"] .. '; ' .. coordinateSpec["dec-long"] .. '</span>' local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>' .. '<span class="geo-multi-punct">&#xfeff; / &#xfeff;</span>' .. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">'; if not args["name"] then inner = inner .. geodechtml .. '<span style="display:none">&#xfeff; / ' .. geonumhtml .. '</span></span>' else inner = inner .. '<span class="vcard">' .. geodechtml .. '<span style="display:none">&#xfeff; / ' .. geonumhtml .. '</span>' .. '<span style="display:none">&#xfeff; (<span class="fn org">' .. args["name"] .. '</span>)</span></span></span>' end return '<span class="plainlinks nourlexpansion">' .. '[' .. coord_link .. uriComponents .. ' ' .. inner .. ']' .. '</span>' end --[[ Hàm hỗ trợ chuyển đổi số thập phân thành độ. ]] local function convert_dec2dms_d(coordinate) local d = math_mod._round( coordinate, 0 ) .. "°" return d .. "" end --[[ Hàm hỗ trợ chuyển đổi số thập phân thành độ và phút. ]] local function convert_dec2dms_dm(coordinate) coordinate = math_mod._round( coordinate * 60, 0 ); local m = coordinate % 60; coordinate = math.floor( (coordinate - m) / 60 ); local d = coordinate % 360 .."°" return d .. string.format( "%02d′", m ) end --[[ Hàm hỗ trợ chuyển đổi số thập phân thành độ, phút, và giây. ]] local function convert_dec2dms_dms(coordinate) coordinate = math_mod._round( coordinate * 60 * 60, 0 ); local s = coordinate % 60 coordinate = math.floor( (coordinate - s) / 60 ); local m = coordinate % 60 coordinate = math.floor( (coordinate - m) / 60 ); local d = coordinate % 360 .."°" return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s ) end --[[ Hàm hỗ trợ chuyển đổi vĩ độ hoặc kinh độ thập phân thành định dạng độ-phút-giây theo độ chính xác được định rõ. ]] local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) local coord = tonumber(coordinate) local postfix if coord >= 0 then postfix = firstPostfix else postfix = secondPostfix end precision = precision:lower(); if precision == "dms" then return convert_dec2dms_dms( math.abs( coord ) ) .. postfix; elseif precision == "dm" then return convert_dec2dms_dm( math.abs( coord ) ) .. postfix; elseif precision == "d" then return convert_dec2dms_d( math.abs( coord ) ) .. postfix; end end --[[ Chuyển đổi định dạng độ-phút-giây thành tọa độ thập phân B hay Đ. ]] local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str) local degrees = tonumber(degrees_str) local minutes = tonumber(minutes_str) or 0 local seconds = tonumber(seconds_str) or 0 local factor = 1 direction = mw.ustring.gsub(direction, '^ *(.-) *$', '%1'); if direction == "S" or direction == "W" then factor = -1 end local precision = 0 if seconds_str then precision = 5 + math.max( math_mod._precision(seconds_str), 0 ); elseif minutes_str and minutes_str ~= '' then precision = 3 + math.max( math_mod._precision(minutes_str), 0 ); else precision = math.max( math_mod._precision(degrees_str), 0 ); end local decimal = factor * (degrees+(minutes+seconds/60)/60) return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based. end --[[ Kiểm tra các giá trị cho vào để nhận ra lỗi không đúng phạm vi. ]] local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong ) local errors = {}; lat_d = tonumber( lat_d ) or 0; lat_m = tonumber( lat_m ) or 0; lat_s = tonumber( lat_s ) or 0; long_d = tonumber( long_d ) or 0; long_m = tonumber( long_m ) or 0; long_s = tonumber( long_s ) or 0; if strong then if lat_d < 0 then table.insert(errors, {source, "vĩ độ < 0 có chữ bán cầu"}) end if long_d < 0 then table.insert(errors, {source, "vĩ độ < 0 có chữ bán cầu"}) end --[[ #coordinates is inconsistent about whether this is an error. If globe: is specified, it won't error on this condition, but otherwise it will. For not simply disable this check. if long_d > 180 then table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"}) end ]] end if lat_d > 90 then table.insert(errors, {source, "vĩ độ > 90"}) end if lat_d < -90 then table.insert(errors, {source, "vĩ độ < -90"}) end if lat_m >= 60 then table.insert(errors, {source, "vĩ phút >= 60"}) end if lat_m < 0 then table.insert(errors, {source, "vĩ phút < 0"}) end if lat_s >= 60 then table.insert(errors, {source, "vĩ giây >= 60"}) end if lat_s < 0 then table.insert(errors, {source, "vĩ giây < 0"}) end if long_d >= 360 then table.insert(errors, {source, "kinh độ >= 360"}) end if long_d <= -360 then table.insert(errors, {source, "kinh độ <= -360"}) end if long_m >= 60 then table.insert(errors, {source, "kinh phút >= 60"}) end if long_m < 0 then table.insert(errors, {source, "kinh phút < 0"}) end if long_s >= 60 then table.insert(errors, {source, "kinh giây >= 60"}) end if long_s < 0 then table.insert(errors, {source, "kinh giây < 0"}) end return errors; end --[[ parseDec Biến đổi vĩ độ và kinh độ thập phân thành một cấu trúc để hiển thị tọa độ. ]] local function parseDec( lat, long, format ) local coordinateSpec = {} local errors = {} if not long then return nil, {{"parseDec", "Thiếu kinh độ"}} end long = long:gsub(",", ".", 1) if not tonumber(long) then return nil, {{"parseDec", "Không thể phân tích số từ kinh độ: " .. long}} end errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false ); coordinateSpec["dec-lat"] = lat; coordinateSpec["dec-long"] = long; local mode = coordinates.determineMode( lat, long ); coordinateSpec["dms-lat"] = convert_dec2dms( lat, "B", "N", mode) -- {{coord/dec2dms|{{{1}}}|B|N|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} coordinateSpec["dms-long"] = convert_dec2dms( long, "Đ", "T", mode) -- {{coord/dec2dms|{{{2}}}|Đ|T|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} if format then coordinateSpec.default = format else coordinateSpec.default = "dec" end return coordinateSpec, errors end --[[ parseDMS Biến đổi vĩ độ và kinh độ dưới dạng độ-phút-giây thành cấu trúc để hiển thị các tọa độ. ]] local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format ) local coordinateSpec, errors, backward = {}, {} lat_f = mw.ustring.upper(lat_f); long_f = mw.ustring.upper(long_f); -- Nhận các chữ bán cầu tiếng Việt. if long_f == "B" or lat_f == "Đ" or lat_f == "T" then local englishFlags = {B = "N", N = "S", T = "W", ["Đ"] = "E"} local lat_f = englishFlags[lat_f] or lat_f local long_f = englishFlags[long_f] or long_f end -- Check if specified backward if lat_f == 'E' or lat_f == 'W' then lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true; end errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true ); if not long_d then return nil, {{"parseDMS", "Thiếu kinh độ" }} end long_d = long_d:gsub(",", ".", 1) if not tonumber(long_d) then return nil, {{"parseDMS", "Không thể phân tích số từ kinh độ:" .. long_d }} end if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then if lat_f:upper() == 'S' then lat_d = '-' .. lat_d; end if long_f:upper() == 'W' then long_d = '-' .. long_d; end return parseDec( lat_d, long_d, format ); end end -- Việt hóa các chữ bán cầu. local vietFlags = {N = "B", S = "N", W = "T", E = "Đ"} local viet_lat_f = vietFlags[lat_f:upper()] or lat_f local viet_long_f = vietFlags[long_f:upper()] or long_f -- Định dạng các số thập phân. if tonumber(lat_s) then lat_s = lang:formatNum(tonumber(lat_s)) end if tonumber(long_s) then long_s = lang:formatNum(tonumber(long_s)) end coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. viet_lat_f coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. viet_long_f coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}} coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}} if format then coordinateSpec.default = format else coordinateSpec.default = "dms" end return coordinateSpec, errors, backward end --[[ Kiểm tra các đối số cho vào để nhận ra kiểu dữ liệu được cung cấp và xử lý đúng cách. ]] local function formatTest(args) local result, errors local backward, primary = false, false local function getParam(args, lim) local ret = {} for i = 1, lim do if args[i] == nil then ret[i] = '' else ret[i] = mw.ustring.match(args[i], '^%s*(.-)%s*$' ); --remove whitespace -- Biến đổi thành định dạng số tiếng Anh. -- CHO RẰNG: Các giá trị số không bao giờ tới 1.000. ret[i] = ret[i]:gsub(",", ".", 1) end end return table.concat(ret, '_') end if not args[1] then -- no lat logic return errorPrinter( {{"formatTest", "Thiếu vĩ độ"}} ) end args[1] = args[1]:gsub(",", ".", 1) if not tonumber(args[1]) then -- bad lat logic return errorPrinter( {{"formatTest", "Không thể phân tích số từ vĩ độ:" .. args[1]}} ) elseif not args[4] and not args[5] and not args[6] then -- dec logic result, errors = parseDec(args[1], args[2], args.format) if not result then return errorPrinter(errors); end result.param = table.concat({args[1]:gsub(",", ".", 1), 'N', args[2]:gsub(",", ".", 1) or '', 'E', args[3] or ''}, '_') elseif dmsTest(args[4], args[8]) then -- dms logic result, errors, backward = parseDMS(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args.format) if args[10] then table.insert(errors, {'formatTest', 'Tham số dư'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 9) elseif dmsTest(args[3], args[6]) then -- dm logic result, errors, backward = parseDMS(args[1], args[2], nil, args[3], args[4], args[5], nil, args[6], args['format']) if args[8] then table.insert(errors, {'formatTest', 'Tham số dư'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 7) elseif dmsTest(args[2], args[4]) then -- d logic result, errors, backward = parseDMS(args[1], nil, nil, args[2], args[3], nil, nil, args[4], args.format) if args[6] then table.insert(errors, {'formatTest', 'Tham số dư'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 5) else -- Error return errorPrinter({{"formatTest", "Định dạng đối số không rõ"}}) end result.name = args.name local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'} for _, v in ipairs(extra_param) do if args[v] then table.insert(errors, {'formatTest', 'Tham số: “' .. v .. '=” cần phải là “' .. v .. ':”' }) end end local ret = specPrinter(args, result) if #errors > 0 then ret = ret .. ' ' .. errorPrinter(errors) .. '[[Thể loại:Trang có thẻ tọa độ hỏng]]' end return ret, backward end --[[ Xếp vào các thể loại theo dõi Wikidata. ]] local function makeWikidataCategories() local ret if mw.wikibase and current_page.namespace == 0 then local entity = mw.wikibase.getEntityObject() if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1] then local snaktype = entity.claims.P625[1].mainsnak.snaktype if snaktype == 'value' then -- coordinates exist both here and on Wikidata, and can be compared. ret = 'Tọa độ trên Wikidata' elseif snaktype == 'somevalue' then ret = 'Tọa độ trên Wikidata có giá trị không rõ' elseif snaktype == 'novalue' then ret = 'Tọa độ trên Wikidata không có giá trị' end else -- We have to either import the coordinates to Wikidata or remove them here. ret = 'Tọa độ không có sẵn trên Wikidata' end end if ret then return mw.ustring.format('[[Thể loại:%s]]', ret) else return '' end end --[[ link Hàm đơn giản xuất địa chỉ tọa độ cho những mục đích khác. Cách sử dụng: {{ #gọi:Coordinates | link }} ]] function coordinates.link(frame) return coord_link; end --[[ dec2dms Hàm bọc cho phép các bản mẫu gọi dec2dms trực tiếp. Cách sử dụng: {{ #gọi:Coordinates | dec2dms | tọa độ thập phân | hậu tố cho số dương | hậu tố cho số âm | độ chính xác }} decimal_coordinate được chuyển đổi thành định dạng độ-phút-giây. Nếu là số dương, hậu tố cho số dương được bổ sung (thường là N hay E); nếu là số dương, hậu tố cho số dương được bổ sung. Độ chính xác định rõ mức chi tiết là một trong “D”, “DM”, hay “DMS”. ]] coordinates.dec2dms = makeInvokeFunc('_dec2dms') function coordinates._dec2dms(args) local coordinate = args[1] local firstPostfix = args[2] or '' local secondPostfix = args[3] or '' local precision = args[4] or '' return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) end --[[ Hàm hỗ trợ quyết định sử dụng định dạng độ, độ-phút, hay độ-phút-giây, tùy độ chính xác của giá trị thập phân cho vào. ]] function coordinates.determineMode( value1, value2 ) local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) ); if precision <= 0 then return 'd' elseif precision <= 2 then return 'dm'; else return 'dms'; end end --[[ dms2dec Hàm bọc cho phép các bản mẫu gọi dms2dec trực tiếp. Cách sử dụng: {{ #gọi:Coordinates | dms2dec | chữ bán cầu | độ | phút | giây }} Chuyển đổi các giá trị độ-phút-giây thành định dạng thập phân. direction_flag là một trong N, S, E, và W và định rõ giá trị cho ra là số dương (N và E) hoặc số âm (S và W). ]] coordinates.dms2dec = makeInvokeFunc('_dms2dec') function coordinates._dms2dec(args) local direction = args[1] local degrees = args[2] local minutes = args[3] local seconds = args[4] return convert_dms2dec(direction, degrees, minutes, seconds) end --[=[ coord Chỗ vào chính của hàm Lua thay thế [[Bản mẫu:Coord]]. Cách sử dụng: {{ #gọi:Coordinates | coord }} {{ #gọi:Coordinates | coord | vĩ độ | kinh độ }} {{ #gọi:Coordinates | coord | vĩ độ | chữ vĩ độ | kinh độ | chữ kinh độ }} … Tra cứu trang tài liệu của [[Bản mẫu:Coord]] để biết đến nhiều tham số và tùy chọn khác. Lưu ý: Hàm này cung cấp các phần tử hiển thị thị giác của [[Bản mẫu:Coord]]. Để cho có thể tải các tọa độ lên cơ sở dữ liệu, hàm cú pháp {{#tọađộ:}} cũng cần được gọi. Hàm này được gọi tự động trong phiên bản Lua của [[Bản mẫu:Coord]]. ]=] coordinates.coord = makeInvokeFunc('_coord') function coordinates._coord(args) if (not args[1] or not tonumber(args[1])) and not args[2] and mw.wikibase.getEntityObject() then args[3] = args[1]; args[1] = nil local entity = mw.wikibase.getEntityObject() if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision args[1]=entity.claims.P625[1].mainsnak.datavalue.value.latitude args[2]=entity.claims.P625[1].mainsnak.datavalue.value.longitude if precision then precision=-math_mod._round(math.log(precision)/math.log(10),0) args[1]=math_mod._round(args[1],precision) args[2]=math_mod._round(args[2],precision) end end end local Display = args.display and args.display:lower() or 'inline' args.wviTitle = (string.find( Display, 'title' ) ~= nil or Display == 't' or Display == 'it' or Display == 'ti') delocalizeArguments(args) local contents, backward = formatTest(args) local Notes = args.notes or '' local function isInline(s) -- Finds whether coordinates are displayed inline. return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti' end local function isInTitle(s) -- Finds whether coordinates are displayed in the title. return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti' end local function coord_wrapper(in_args) -- Calls the parser function {{#coordinates:}}. return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or '' end local text = '' if isInline(Display) then text = text .. displayinline(contents, Notes) end if isInTitle(Display) then text = text .. displaytitle(contents, Notes) .. makeWikidataCategories() end if not args.nosave then local page_title, count = mw.title.getCurrentTitle(), 1 if backward then local tmp = {} while not mw.ustring.find((args[count-1] or ''), '[EWĐT]') do tmp[count] = (args[count] or ''); count = count+1 end tmp.count = count; count = 2*(count-1) while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end for i, v in ipairs(tmp) do args[i] = v end else while count <= 9 do args[count] = (args[count] or ''); count = count+1 end end if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'tài liệu' and page_title.subpageText ~= 'testcases' and page_title.subpageText ~='kiểm thử' then args[10] = 'primary' end args.notes, args.format, args.display = nil text = text .. coord_wrapper(args) end return text end --[=[ coord2text Phân tích ra một giá trị từ lần nhúng [[Bản mẫu:Tọa độ]]. NẾU CÚ PHÁP LIÊN KẾT CỦA GEOHACK THAY ĐỔI, HÀM NÀY CẦN ĐƯỢC THAY ĐỔI LUÔN. Cách sử dụng: {{#gọi:Coordinates | coord2text | {{Tọa độ}} | parameter }} Giá trị hợp lệ cho tham số thứ hai là: lat (số nguyên có dấu), long (số nguyên có dấu), type, scale, dim, region, globe, source ]=] function coordinates.coord2text(frame) if frame.args[1] == '' or frame.args[2] == '' or not frame.args[2] then return nil end frame.args[2] = mw.text.trim(frame.args[2]) if frame.args[2] == 'lat' or frame.args[2] == 'long' then local result, negative = mw.text.split((mw.ustring.match(frame.args[1],'[,%d]+°[BN] [,%d]+°[ĐT]') or ''), ' ') if frame.args[2] == 'lat' then result, negative = result[1], 'N' else result, negative = result[2], 'T' end result = mw.text.split(result, '°') if result[2] == negative then result[1] = '-'..result[1] end return lang:parseFormattedNumber(result[1]) else return mw.ustring.match(frame.args[1], 'params=.-_'..frame.args[2]..':(.-)[ _]') end end --[=[ coordinsert Xen văn bản vào liên kết GeoHack của một lần nhúng [[Bản mẫu:Tọa độ]] (nếu văn bản này không phải đã xuất hiện trong mã nhúng). Trả về mã nhúng [[Bản mẫu:Tọa độ]] đã sửa đổi. NẾU CÚ PHÁP LIÊN KẾT CỦA GEOHACK THAY ĐỔI, HÀM NÀY CẦN ĐƯỢC THAY ĐỔI LUÔN. Cách sử dụng: {{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }} Đừng làm GeoHack gây lỗi bằng cách đưa vào gì không được nói đến trong tài liệu [[Bản mẫu:Tọa độ]]. ]=] function coordinates.coordinsert(frame) for i, v in ipairs(frame.args) do if i ~= 1 then if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ') end end end if frame.args.name then if not mw.ustring.find(frame.args[1], '<span class="vcard">') then local namestr = frame.args.name frame.args[1] = mw.ustring.gsub(frame.args[1], '(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)', '%1<span class="vcard">%2<span style="display:none">&#xfeff; (<span class="fn org">' .. namestr .. '</span>)</span></span>%3') frame.args[1] = mw.ustring.gsub(frame.args[1], '(&params=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ') end end return frame.args[1] end return coordinates </textarea><div id="mw-scribunto-console"></div><div class="templatesUsed"><div class="mw-templatesUsedExplanation"><p>Các bản mẫu dùng trong trang này: </p></div><ul> <li><a href="/wiki/B%E1%BA%A3n_m%E1%BA%ABu:T%C3%A0i_li%E1%BB%87u" title="Bản mẫu:Tài liệu">Bản mẫu:Tài liệu</a> (<a href="/w/index.php?title=B%E1%BA%A3n_m%E1%BA%ABu:T%C3%A0i_li%E1%BB%87u&action=edit" title="Bản mẫu:Tài liệu">xem mã nguồn</a>) (hạn chế cho phép kỹ thuật viên bản mẫu sửa đổi)</li><li><a href="/wiki/M%C3%B4_%C4%91un:Arguments" title="Mô đun:Arguments">Mô đun:Arguments</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Arguments&action=edit" title="Mô đun:Arguments">xem mã nguồn</a>) (bị khóa)</li><li><a href="/wiki/M%C3%B4_%C4%91un:Coordinates" title="Mô đun:Coordinates">Mô đun:Coordinates</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Coordinates&action=edit" title="Mô đun:Coordinates">xem mã nguồn</a>) (bị khóa)</li><li><a href="/w/index.php?title=M%C3%B4_%C4%91un:Coordinates/t%C3%A0i_li%E1%BB%87u&action=edit&redlink=1" class="new" title="Mô đun:Coordinates/tài liệu (trang không tồn tại)">Mô đun:Coordinates/tài liệu</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Coordinates/t%C3%A0i_li%E1%BB%87u&action=edit" class="new" title="Mô đun:Coordinates/tài liệu (trang không tồn tại)">sửa đổi</a>) </li><li><a href="/wiki/M%C3%B4_%C4%91un:Documentation" title="Mô đun:Documentation">Mô đun:Documentation</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Documentation&action=edit" title="Mô đun:Documentation">xem mã nguồn</a>) (hạn chế cho phép kỹ thuật viên bản mẫu sửa đổi)</li><li><a href="/wiki/M%C3%B4_%C4%91un:Documentation/config" title="Mô đun:Documentation/config">Mô đun:Documentation/config</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Documentation/config&action=edit" title="Mô đun:Documentation/config">xem mã nguồn</a>) (hạn chế cho thành viên xác nhận mở rộng)</li><li><a href="/wiki/M%C3%B4_%C4%91un:Documentation/styles.css" title="Mô đun:Documentation/styles.css">Mô đun:Documentation/styles.css</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Documentation/styles.css&action=edit" title="Mô đun:Documentation/styles.css">xem mã nguồn</a>) (hạn chế cho thành viên xác nhận mở rộng)</li><li><a href="/wiki/M%C3%B4_%C4%91un:Effective_protection_expiry" title="Mô đun:Effective protection expiry">Mô đun:Effective protection expiry</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Effective_protection_expiry&action=edit" title="Mô đun:Effective protection expiry">xem mã nguồn</a>) (bị khóa hạn chế sửa đổi)</li><li><a href="/wiki/M%C3%B4_%C4%91un:Effective_protection_level" title="Mô đun:Effective protection level">Mô đun:Effective protection level</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Effective_protection_level&action=edit" title="Mô đun:Effective protection level">xem mã nguồn</a>) (hạn chế cho thành viên xác nhận mở rộng)</li><li><a href="/wiki/M%C3%B4_%C4%91un:File_link" title="Mô đun:File link">Mô đun:File link</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:File_link&action=edit" title="Mô đun:File link">xem mã nguồn</a>) (bị khóa hạn chế sửa đổi)</li><li><a href="/wiki/M%C3%B4_%C4%91un:Math" title="Mô đun:Math">Mô đun:Math</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Math&action=edit" title="Mô đun:Math">xem mã nguồn</a>) (bị khóa)</li><li><a href="/wiki/M%C3%B4_%C4%91un:Protection_banner" title="Mô đun:Protection banner">Mô đun:Protection banner</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Protection_banner&action=edit" title="Mô đun:Protection banner">xem mã nguồn</a>) (hạn chế cho phép kỹ thuật viên bản mẫu sửa đổi)</li><li><a href="/wiki/M%C3%B4_%C4%91un:Protection_banner/config" title="Mô đun:Protection banner/config">Mô đun:Protection banner/config</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Protection_banner/config&action=edit" title="Mô đun:Protection banner/config">xem mã nguồn</a>) (hạn chế cho phép kỹ thuật viên bản mẫu sửa đổi)</li><li><a href="/wiki/M%C3%B4_%C4%91un:Yesno" title="Mô đun:Yesno">Mô đun:Yesno</a> (<a href="/w/index.php?title=M%C3%B4_%C4%91un:Yesno&action=edit" title="Mô đun:Yesno">xem mã nguồn</a>) (bị khóa)</li></ul></div><p id="mw-returnto">Trở lại <a href="/wiki/M%C3%B4_%C4%91un:Coordinates" title="Mô đun:Coordinates">Mô đun:Coordinates</a>.</p> <!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1&useformat=desktop" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Lấy từ “<a dir="ltr" href="https://vi.wikipedia.org/wiki/Mô_đun:Coordinates">https://vi.wikipedia.org/wiki/Mô_đun:Coordinates</a>”</div></div> <div id="catlinks" class="catlinks catlinks-allhidden" data-mw="interface"></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Quy định quyền riêng tư</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:Gi%E1%BB%9Bi_thi%E1%BB%87u">Giới thiệu Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:Ph%E1%BB%A7_nh%E1%BA%ADn_chung">Lời phủ nhận</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Bộ Quy tắc Ứng xử Chung</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Lập trình viên</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/vi.wikipedia.org">Thống kê</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Tuyên bố về cookie</a></li> <li id="footer-places-mobileview"><a href="//vi.m.wikipedia.org/w/index.php?title=M%C3%B4_%C4%91un:Coordinates&action=edit&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Phiên bản di động</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.log.warn("This page is using the deprecated ResourceLoader module \"mediawiki.ui.button\".\n[1.41] Please use Codex. See migration guidelines: https://www.mediawiki.org/wiki/Codex/Migrating_from_MediaWiki_UI");mw.config.set({"wgHostname":"mw-web.codfw.main-5c59558b9d-sz2fc","wgBackendResponseTime":267,"wgPageParseReport":{"limitreport":{"cputime":"0.062","walltime":"0.092","ppvisitednodes":{"value":265,"limit":1000000},"postexpandincludesize":{"value":39683,"limit":2097152},"templateargumentsize":{"value":802,"limit":2097152},"expansiondepth":{"value":20,"limit":100},"expensivefunctioncount":{"value":7,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":431,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 71.939 1 -total"," 81.52% 58.645 1 Bản_mẫu:Văn_bản_trang_khóa/khóa_hẳn"," 76.13% 54.768 1 Bản_mẫu:Văn_bản_trang_khóa"," 62.82% 45.195 1 Bản_mẫu:Fmbox"," 29.78% 21.423 1 Bản_mẫu:Yêu_cầu_sửa_trang_khóa"," 18.29% 13.161 1 Bản_mẫu:Thông_báo_sửa_đổi_của_trang"," 16.20% 11.656 1 Bản_mẫu:Thông_báo_sửa_đổi_của_trang/nội_dung"," 14.00% 10.068 1 Bản_mẫu:Thông_báo_sửa_đổi_của_trang/Nguồn"," 6.62% 4.760 1 Bản_mẫu:Mbox"," 5.48% 3.943 2 Bản_mẫu:Ns_has_subpages"]},"scribunto":{"limitreport-timeusage":{"value":"0.018","limit":"10.000"},"limitreport-memusage":{"value":953042,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-5c59558b9d-sz2fc","timestamp":"20241201231755","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>