Я пытаюсь извлечь только местоположение города, используя expo-location. Я смог получить полное местоположение пользователя, используя этот код:
1 import React, { useState, useEffect } from 'react';
2 import { Text, View, StyleSheet } from 'react-native';
3 import * as Location from 'expo-location';
4
5 export default function App() {
6 const [location, setLocation] = useState(null);
7 const [errorMsg, setErrorMsg] = useState(null);
8
9 useEffect(() => {
10 (async () => {
11 let { status } = await Location.requestPermissionsAsync();
12 if (status !== 'granted') {
13 setErrorMsg('Permission to access location was denied');
14 }
15
16 let regionName = await Location.reverseGeocodeAsync( { longitude: 37.6172999, latitude: 55.755826 } );
17 setLocation(regionName);
18 console.log(regionName);
19 })();
20 }, []);
21
22 let text = 'Waiting..';
23 if (errorMsg) {
24 text = errorMsg;
25 } else if (location) {
26 text = JSON.stringify(location);
27 }
28
29 return (
30 <View style={styles.container}>
31 <Text>{text}</Text>
32 </View>
33 );
34 }
35
36 const styles = StyleSheet.create({
37 container: {
38 flex: 1,
39 backgroundColor: '#bcbcbc',
40 alignItems: 'center',
41 justifyContent: 'center',
42 },
43 big: {
44 fontSize: 18,
45 color: "white",
46 }
47 });
48
Итак, я попытался получить только местоположение города, изменив строку 26 на text = JSON.stringify([0].city);
, но на моем телефоне больше ничего не отображается ...
Терминал показывает мне этот журнал из console.log:
Array [
Object {
"city": "Moscow",
"country": "Russia",
"district": "Central Administrative Okrug",
"isoCountryCode": "RU",
"name": "109012",
"postalCode": "109012",
"region": null,
"street": null,
"subregion": "Moscow",
"timezone": null,
},
]
Если кто-то может помочь мне найти способ узнать местоположение города, я был бы очень рад
Я подумал, что это может мне помочь, если я попытаюсь получить такой город, ПЕРЕМЕН СО СТРОКИ 22 НА СТРОКУ 27 НА ЭТО:
const city = "Waiting..."
if (errorMsg) {
city = errorMsg;
} else if (location) {
city = Object.keys(regionName).reduce((result, key) => {
return result.concat(regionName[key].city)
}, []);
};
чтобы получить только массив [0], но по какой-то причине я получил только следующее: [Отклонение необработанного обещания: Ошибка: город доступен только для чтения] Почему только для чтения? Я не понял ... Кто-нибудь может мне помочь?