Skip to content

Instantly share code, notes, and snippets.

@forrestwilkins
Last active September 5, 2020 02:55
Show Gist options
  • Save forrestwilkins/60d6a76d393d44343693a7ac20545ee8 to your computer and use it in GitHub Desktop.
Save forrestwilkins/60d6a76d393d44343693a7ac20545ee8 to your computer and use it in GitHub Desktop.
Geolocation
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.covidmap">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:allowBackup="false"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
</manifest>
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow strict-local
*/
import React, { useState } from 'react';
import {
SafeAreaView,
StyleSheet,
ScrollView,
View,
Text,
StatusBar,
TouchableOpacity,
Alert,
Platform,
PermissionsAndroid
} from 'react-native';
// To have geolocation API aligned with the browser (cross-platform apps), or to support backward compatibility
navigator.geolocation = require('@react-native-community/geolocation');
const App: () => React$Node = () => {
const [location, setLocation] = useState(null);
const requestLocationPermission = async () => {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
title: 'Location Permission',
message:'Get your location to post request',
buttonNeutral: "Ask Me Later",
buttonNegative: "Cancel",
buttonPositive: "OK"
}
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can use geolocation");
} else {
console.log(JSON.stringify(granted));
console.log(PermissionsAndroid.RESULTS.GRANTED);
}
} catch (err) {
console.warn(err);
}
};
const findCoordinates = () => {
//requestPermissions();
navigator.geolocation.getCurrentPosition(
position => {
const location = JSON.stringify(position);
setLocation(location);
},
error => Alert.alert(error.message),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
);
};
return (
<>
<SafeAreaView>
<ScrollView
contentInsetAdjustmentBehavior="automatic">
<View>
<Text>
Overthrow capitalism!
</Text>
<TouchableOpacity onPress={requestLocationPermission}>
<Text>Request permissions for location</Text>
</TouchableOpacity>
<TouchableOpacity onPress={findCoordinates}>
<Text>Find My Coords?</Text>
<Text>Location: {location}</Text>
</TouchableOpacity>
</View>
</ScrollView>
</SafeAreaView>
</>
);
};
export default App;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment