Files
react-native/docs/0.57/geolocation.html
T
Website Deployment Script d6c8c31cb1 Deploy website
Deploy website version based on aa6bca5d8b7a59a46c8e4e5a6803f43206c13b65
2020-09-16 06:40:19 +00:00

221 lines
41 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Geolocation · React Native</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="The Geolocation API extends the [Geolocation web spec](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation)."/><meta name="docsearch:version" content="0.57"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Geolocation · React Native"/><meta property="og:type" content="website"/><meta property="og:url" content="https://reactnative.dev/"/><meta property="og:description" content="The Geolocation API extends the [Geolocation web spec](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation)."/><meta property="og:image" content="https://reactnative.dev/img/logo-og.png"/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://reactnative.dev/img/logo-og.png"/><link rel="shortcut icon" href="/img/favicon.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/solarized-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://reactnative.dev/blog/atom.xml" title="React Native Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://reactnative.dev/blog/feed.xml" title="React Native Blog RSS Feed"/><script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41298772-2', 'auto');
ga('send', 'pageview');
</script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/focus-visible@5.0.2/dist/focus-visible.min.js"></script><script type="text/javascript" src="https://snack.expo.io/embed.js"></script><script type="text/javascript" src="https://platform.twitter.com/widgets.js"></script><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="/js/codeblocks.js"></script><script type="text/javascript" src="/js/tabs.js"></script><script type="text/javascript" src="/js/docs-rating.js"></script><script src="https://unpkg.com/vanilla-back-to-top@7.1.14/dist/vanilla-back-to-top.min.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
addBackToTop(
{"zIndex":100}
)
});
</script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/prism.css"/><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/header_logo.svg" alt="React Native"/><h2 class="headerTitleWithLogo">React Native</h2></a><a href="/versions"><h3>0.57</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class="siteNavGroupActive"><a href="/docs/0.57/getting-started" target="_self">Docs</a></li><li class="siteNavGroupActive"><a href="/docs/0.57/components-and-apis" target="_self">Components</a></li><li class="siteNavGroupActive"><a href="/docs/0.57/accessibilityinfo" target="_self">API</a></li><li class=""><a href="/help" target="_self">Community</a></li><li class=""><a href="/blog/" target="_self">Blog</a></li><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li><li class=""><a href="https://github.com/facebook/react-native" target="_self">GitHub</a></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line1"></div><div class="line2"></div><div class="line3"></div></div></div><h2><i></i><span>APIs</span></h2><div class="tocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">The Basics<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/0.57/getting-started">Getting Started</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/tutorial">Learn the Basics</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/props">Props</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/state">State</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/style">Style</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/height-and-width">Height and Width</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/flexbox">Layout with Flexbox</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/handling-text-input">Handling Text Input</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/handling-touches">Handling Touches</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/using-a-scrollview">Using a ScrollView</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/using-a-listview">Using List Views</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/network">Networking</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/more-resources">More Resources</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Guides<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/0.57/components-and-apis">Components and APIs</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/platform-specific-code">Platform Specific Code</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/navigation">Navigating Between Screens</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/images">Images</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/animations">Animations</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/accessibility">Accessibility</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/improvingux">Improving User Experience</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/timers">Timers</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/debugging">Debugging</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/performance">Performance</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/gesture-responder-system">Gesture Responder System</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/javascript-environment">JavaScript Environment</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/direct-manipulation">Direct Manipulation</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/colors">Color Reference</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/integration-with-existing-apps">Integration with Existing Apps</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/building-for-tv">Building For TV Devices</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/running-on-device">Running On Device</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/upgrading">Upgrading to new React Native versions</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/troubleshooting">Troubleshooting</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/native-modules-setup">Native Modules Setup</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/out-of-tree-platforms">Out-of-Tree Platforms</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Guides (iOS)<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/0.57/native-modules-ios">Native Modules</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/native-components-ios">Native UI Components</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/linking-libraries-ios">Linking Libraries</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/running-on-simulator-ios">Running On Simulator</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/communication-ios">Communication between native and React Native</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/app-extensions">App Extensions</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Guides (Android)<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/0.57/native-modules-android">Native Modules</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/native-components-android">Native UI Components</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/headless-js-android">Headless JS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/signed-apk-android">Publishing to Google Play Store</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/removing-default-permissions">Removing Default Permissions</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Components<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/0.57/activityindicator">ActivityIndicator</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/button">Button</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/datepickerios">DatePickerIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/drawerlayoutandroid">DrawerLayoutAndroid</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/flatlist">FlatList</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/image">Image</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/imagebackground">ImageBackground</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/inputaccessoryview">InputAccessoryView</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/keyboardavoidingview">KeyboardAvoidingView</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/listview">ListView</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/maskedviewios">MaskedViewIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/modal">Modal</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/navigatorios">NavigatorIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/picker">Picker</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/pickerios">PickerIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/progressbarandroid">ProgressBarAndroid</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/progressviewios">ProgressViewIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/refreshcontrol">RefreshControl</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/safeareaview">SafeAreaView</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/scrollview">ScrollView</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/sectionlist">SectionList</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/segmentedcontrolios">SegmentedControlIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/slider">Slider</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/snapshotviewios">SnapshotViewIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/statusbar">StatusBar</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/switch">Switch</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/tabbarios">TabBarIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/tabbarios-item">TabBarIOS.Item</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/text">Text</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/textinput">TextInput</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/toolbarandroid">ToolbarAndroid</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/touchablehighlight">TouchableHighlight</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/touchablenativefeedback">TouchableNativeFeedback</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/touchableopacity">TouchableOpacity</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/touchablewithoutfeedback">TouchableWithoutFeedback</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/view">View</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/viewpagerandroid">ViewPagerAndroid</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/virtualizedlist">VirtualizedList</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/webview">WebView</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">APIs<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/0.57/accessibilityinfo">AccessibilityInfo</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/actionsheetios">ActionSheetIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/alert">Alert</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/alertios">AlertIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/animated">Animated</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/appregistry">AppRegistry</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/appstate">AppState</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/asyncstorage">AsyncStorage</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/backandroid">BackAndroid</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/backhandler">BackHandler</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/cameraroll">CameraRoll</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/clipboard">Clipboard</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/datepickerandroid">DatePickerAndroid</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/dimensions">Dimensions</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/easing">Easing</a></li><li class="navListItem navListItemActive"><a class="navItem" href="/docs/0.57/geolocation">Geolocation</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/imageeditor">ImageEditor</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/imagepickerios">ImagePickerIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/imagestore">ImageStore</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/image-style-props">Image Style Props</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/interactionmanager">InteractionManager</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/keyboard">Keyboard</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/layout-props">Layout Props</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/layoutanimation">LayoutAnimation</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/linking">Linking</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/listviewdatasource">ListViewDataSource</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/netinfo">NetInfo</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/panresponder">PanResponder</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/permissionsandroid">PermissionsAndroid</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/pixelratio">PixelRatio</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/pushnotificationios">PushNotificationIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/settings">Settings</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/shadow-props">Shadow Props</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/share">Share</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/statusbarios">StatusBarIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/stylesheet">StyleSheet</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/systrace">Systrace</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/text-style-props">Text Style Props</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/timepickerandroid">TimePickerAndroid</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/toastandroid">ToastAndroid</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/transforms">Transforms</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/vibration">Vibration</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/vibrationios">VibrationIOS</a></li><li class="navListItem"><a class="navItem" href="/docs/0.57/view-style-props">View Style Props</a></li></ul></div></div></section></div><script>
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
var links = coll[i].nextElementSibling.getElementsByTagName('*');
if (checkActiveCategory){
for (var j = 0; j < links.length; j++) {
if (links[j].classList.contains('navListItemActive')){
coll[i].nextElementSibling.classList.toggle('hide');
coll[i].childNodes[1].classList.toggle('rotate');
checkActiveCategory = false;
break;
}
}
}
coll[i].addEventListener('click', function() {
var arrow = this.childNodes[1];
arrow.classList.toggle('rotate');
var content = this.nextElementSibling;
content.classList.toggle('hide');
});
}
document.addEventListener('DOMContentLoaded', function() {
createToggler('#navToggler', '#docsNav', 'docsSliderActive');
createToggler('#tocToggler', 'body', 'tocActive');
var headings = document.querySelector('.toc-headings');
headings && headings.addEventListener('click', function(event) {
var el = event.target;
while(el !== headings){
if (el.tagName === 'A') {
document.body.classList.remove('tocActive');
break;
} else{
el = el.parentNode;
}
}
}, false);
function createToggler(togglerSelector, targetSelector, className) {
var toggler = document.querySelector(togglerSelector);
var target = document.querySelector(targetSelector);
if (!toggler) {
return;
}
toggler.onclick = function(event) {
event.preventDefault();
target.classList.toggle(className);
};
}
});
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/facebook/react-native-website/blob/master/docs/geolocation.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Geolocation</h1></header><article><div><span><p>The Geolocation API extends the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Geolocation">Geolocation web spec</a>.</p>
<p>As a browser polyfill, this API is available through the <code>navigator.geolocation</code> global - you do not need to <code>import</code> it.</p>
<h3><a class="anchor" aria-hidden="true" id="configuration-and-permissions"></a><a href="#configuration-and-permissions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Configuration and Permissions</h3>
<div class="banner-crna-ejected">
<h3>Projects with Native Code Only</h3>
<p>
This section only applies to projects made with <code>react-native init</code>
or to those made with Create React Native App which have since ejected. For
more information about ejecting, please see
the <a href="https://github.com/react-community/create-react-native-app/blob/master/EJECTING.md" target="_blank">guide</a> on
the Create React Native App repository.
</p>
</div>
<h4><a class="anchor" aria-hidden="true" id="ios"></a><a href="#ios" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>iOS</h4>
<p>You need to include the <code>NSLocationWhenInUseUsageDescription</code> key in Info.plist to enable geolocation when using the app. Geolocation is enabled by default when you create a project with <code>react-native init</code>.</p>
<p>In order to enable geolocation in the background, you need to include the 'NSLocationAlwaysUsageDescription' key in Info.plist and add location as a background mode in the 'Capabilities' tab in Xcode.</p>
<p>If you are using CocoaPods for React Native, make sure to include the <code>RCTGeolocation</code> sub-podspec.</p>
<h4><a class="anchor" aria-hidden="true" id="android"></a><a href="#android" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Android</h4>
<p>To request access to location, you need to add the following line to your app's <code>AndroidManifest.xml</code>:</p>
<p><code>&lt;uses-permission android:name=&quot;android.permission.ACCESS_FINE_LOCATION&quot; /&gt;</code></p>
<p>Android API &gt;= 18 Positions will also contain a <code>mocked</code> boolean to indicate if position was created from a mock provider.</p>
<p>
Android API >= 23 Requires an additional step to check for, and request
the ACCESS_FINE_LOCATION permission using
the <a href="/docs/permissionsandroid.html" target="_blank">PermissionsAndroid API</a>.
Failure to do so may result in a hard crash.
</p>
<h3><a class="anchor" aria-hidden="true" id="methods"></a><a href="#methods" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Methods</h3>
<ul>
<li><a href="geolocation.md#setrnconfiguration"><code>setRNConfiguration</code></a></li>
<li><a href="geolocation.md#requestauthorization"><code>requestAuthorization</code></a></li>
<li><a href="geolocation.md#getcurrentposition"><code>getCurrentPosition</code></a></li>
<li><a href="geolocation.md#watchposition"><code>watchPosition</code></a></li>
<li><a href="geolocation.md#clearwatch"><code>clearWatch</code></a></li>
<li><a href="geolocation.md#stopobserving"><code>stopObserving</code></a></li>
</ul>
<hr>
<h1><a class="anchor" aria-hidden="true" id="reference"></a><a href="#reference" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Reference</h1>
<h2><a class="anchor" aria-hidden="true" id="methods-1"></a><a href="#methods-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Methods</h2>
<h3><a class="anchor" aria-hidden="true" id="setrnconfiguration"></a><a href="#setrnconfiguration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a><code>setRNConfiguration()</code></h3>
<pre><code class="hljs css language-jsx">geolocation<span class="token punctuation">.</span><span class="token function">setRNConfiguration</span><span class="token punctuation">(</span>config<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<p>Sets configuration options that will be used in all location requests.</p>
<p><strong>Parameters:</strong></p>
<table>
<thead>
<tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td>config</td><td>object</td><td>Yes</td><td>See below.</td></tr>
</tbody>
</table>
<p>Supported options:</p>
<ul>
<li><code>skipPermissionRequests</code> (boolean, iOS-only) - Defaults to <code>false</code>. If <code>true</code>, you must request permissions before using Geolocation APIs.</li>
</ul>
<hr>
<h3><a class="anchor" aria-hidden="true" id="requestauthorization"></a><a href="#requestauthorization" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a><code>requestAuthorization()</code></h3>
<pre><code class="hljs css language-jsx">geolocation<span class="token punctuation">.</span><span class="token function">requestAuthorization</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<p>Request suitable Location permission based on the key configured on pList. If NSLocationAlwaysUsageDescription is set, it will request Always authorization, although if NSLocationWhenInUseUsageDescription is set, it will request InUse authorization.</p>
<hr>
<h3><a class="anchor" aria-hidden="true" id="getcurrentposition"></a><a href="#getcurrentposition" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a><code>getCurrentPosition()</code></h3>
<pre><code class="hljs css language-jsx">geolocation<span class="token punctuation">.</span><span class="token function">getCurrentPosition</span><span class="token punctuation">(</span>
geo_success<span class="token punctuation">,</span>
<span class="token punctuation">[</span>geo_error<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span>geo_options<span class="token punctuation">]</span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<p>Invokes the success callback once with the latest location info.</p>
<p><strong>Parameters:</strong></p>
<table>
<thead>
<tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td>geo_success</td><td>function</td><td>Yes</td><td>Invoked with latest location info.</td></tr>
<tr><td>geo_error</td><td>function</td><td>No</td><td>Invoked whenever an error is encountered.</td></tr>
<tr><td>geo_options</td><td>object</td><td>No</td><td>See below.</td></tr>
</tbody>
</table>
<p>Supported options:</p>
<ul>
<li><code>timeout</code> (ms) - Is a positive value representing the maximum length of time (in milliseconds) the device is allowed to take in order to return a position. Defaults to INFINITY.</li>
<li><code>maximumAge</code> (ms) - Is a positive value indicating the maximum age in milliseconds of a possible cached position that is acceptable to return. If set to 0, it means that the device cannot use a cached position and must attempt to retrieve the real current position. If set to Infinity the device will always return a cached position regardless of its age. Defaults to INFINITY.</li>
<li><code>enableHighAccuracy</code> (bool) - Is a boolean representing if to use GPS or not. If set to true, a GPS position will be requested. If set to false, a WIFI location will be requested.</li>
</ul>
<hr>
<h3><a class="anchor" aria-hidden="true" id="watchposition"></a><a href="#watchposition" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a><code>watchPosition()</code></h3>
<pre><code class="hljs css language-jsx">geolocation<span class="token punctuation">.</span><span class="token function">watchPosition</span><span class="token punctuation">(</span>success<span class="token punctuation">,</span> <span class="token punctuation">[</span>error<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span>options<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<p>Invokes the success callback whenever the location changes. Returns a <code>watchId</code> (number).</p>
<p><strong>Parameters:</strong></p>
<table>
<thead>
<tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td>success</td><td>function</td><td>Yes</td><td>Invoked whenever the location changes.</td></tr>
<tr><td>error</td><td>function</td><td>No</td><td>Invoked whenever an error is encountered.</td></tr>
<tr><td>options</td><td>object</td><td>No</td><td>See below.</td></tr>
</tbody>
</table>
<p>Supported options:</p>
<ul>
<li><code>timeout</code> (ms) - Is a positive value representing the maximum length of time (in milliseconds) the device is allowed to take in order to return a position. Defaults to INFINITY.</li>
<li><code>maximumAge</code> (ms) - Is a positive value indicating the maximum age in milliseconds of a possible cached position that is acceptable to return. If set to 0, it means that the device cannot use a cached position and must attempt to retrieve the real current position. If set to Infinity the device will always return a cached position regardless of its age. Defaults to INFINITY.</li>
<li><code>enableHighAccuracy</code> (bool) - Is a boolean representing if to use GPS or not. If set to true, a GPS position will be requested. If set to false, a WIFI location will be requested.</li>
<li><code>distanceFilter</code> (m) - The minimum distance from the previous location to exceed before returning a new location. Set to 0 to not filter locations. Defaults to 100m.</li>
<li><code>useSignificantChanges</code> (bool) - Uses the battery-efficient native significant changes APIs to return locations. Locations will only be returned when the device detects a significant distance has been breached. Defaults to FALSE.</li>
</ul>
<hr>
<h3><a class="anchor" aria-hidden="true" id="clearwatch"></a><a href="#clearwatch" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a><code>clearWatch()</code></h3>
<pre><code class="hljs css language-jsx">geolocation<span class="token punctuation">.</span><span class="token function">clearWatch</span><span class="token punctuation">(</span>watchID<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<p><strong>Parameters:</strong></p>
<table>
<thead>
<tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td>watchID</td><td>number</td><td>Yes</td><td>Id as returned by <code>watchPosition()</code>.</td></tr>
</tbody>
</table>
<hr>
<h3><a class="anchor" aria-hidden="true" id="stopobserving"></a><a href="#stopobserving" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a><code>stopObserving()</code></h3>
<pre><code class="hljs css language-jsx">geolocation<span class="token punctuation">.</span><span class="token function">stopObserving</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<p>Stops observing for device location changes. In addition, it removes all listeners previously registered.</p>
<p>Notice that this method has only effect if the <code>geolocation.watchPosition(successCallback, errorCallback)</code> method was previously invoked.</p>
</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.57/easing"><span class="arrow-prev"></span><span>Easing</span></a><a class="docs-next button" href="/docs/0.57/imageeditor"><span class="function-name-prevnext">🚧 ImageEditor</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#methods-1">Methods</a><ul class="toc-headings"><li><a href="#setrnconfiguration"><code>setRNConfiguration()</code></a></li><li><a href="#requestauthorization"><code>requestAuthorization()</code></a></li><li><a href="#getcurrentposition"><code>getCurrentPosition()</code></a></li><li><a href="#watchposition"><code>watchPosition()</code></a></li><li><a href="#clearwatch"><code>clearWatch()</code></a></li><li><a href="#stopobserving"><code>stopObserving()</code></a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><div><h5>Docs</h5><a href="/docs/getting-started">Getting Started</a><a href="/docs/tutorial">Tutorial</a><a href="/docs/components-and-apis">Components and APIs</a><a href="/docs/more-resources">More Resources</a></div><div><h5>Community</h5><a href="/help">The React Native Community</a><a href="/showcase">Who&#x27;s using React Native?</a><a href="https://stackoverflow.com/questions/tagged/react-native" target="_blank">Ask Questions on Stack Overflow</a><a href="https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md">Contributor Guide</a><a href="https://dev.to/t/reactnative" target="_blank">DEV Community</a></div><div><h5>More Resources</h5><a href="/blog">Blog</a><a href="https://twitter.com/reactnative" target="_blank">Twitter</a><a href="https://github.com/facebook/react-native" target="_blank">GitHub</a><a href="https://reactjs.org" target="_blank">React</a></div></section><a href="https://code.facebook.com/projects/" target="_blank" class="fbOpenSource"><img src="/img/oss_logo.png" alt="Facebook Open Source" width="170" height="45"/></a><section class="copyright">Copyright © 2020 Facebook Inc.</section></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.fbAsyncInit = function() {FB.init({appId:'1677033832619985',xfbml:true,version:'v2.7'});};(function(d, s, id){var js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) {return;}js = d.createElement(s); js.id = id;js.src = '//connect.facebook.net/en_US/sdk.js';fjs.parentNode.insertBefore(js, fjs);}(document, 'script','facebook-jssdk'));
</script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</script><script>
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
}
// keyCode for '/' (slash)
if (e.keyCode === 191) {
const search = document.getElementById('search_input_react');
search && search.focus();
}
});
</script><script>
var search = docsearch({
apiKey: '2c98749b4a1e588efec53b2acec13025',
indexName: 'react-native-versions',
inputSelector: '#search_input_react',
algoliaOptions: {"facetFilters":["tags:0.57"],"hitsPerPage":5}
});
</script></body></html>