当我试图在react native中获得我的位置时,我收到了以下错误消息:

smtd7mpg  于 2022-11-25  发布在  React
关注(0)|答案(1)|浏览(157)

在设备中:更新视图管理器的属性“坐标"时出错:航空Map标记
在控制台终端中:错误警告:失败的道具类型:属性coordinate.latitudeMapMarker中标记为必需,但其值为null
我代码:
从“react”导入{使用上下文,使用效果,使用状态}
从“../../global/Context”导入上下文
从“react-native-maps”导入Map视图{标记}
从'expo-location'导入 * 作为位置
从“react-native”导入{视图、样式表、图像背景、尺寸、文本、可触摸不透明度}
位置=(道具)=〉{
const [位置,设置位置] =使用状态(null)
const [错误消息,设置错误消息] =使用状态(空)
const {状态} = useContext(上下文)
网站地址states.place

useEffect(()=>{
    (async()=>{
        let { status } = await Position.requestBackgroundPermissionsAsync()

        if(status !== 'granted'){
            setErrorMsg('App não tem permissão para acessar localizaçõa')
        }

        let location = await Position.getCurrentPositionAsync()
        setLocation(location)
    })()
}, [])

let text = 'Carregando...'
if(errorMsg){
    text = errorMsg
}else if(location){
    text = JSON.stringify(location)
}

return(
    <ImageBackground
        style={{flex:1}}
        source={require('../../img/mypoint-wallpaper.jpg')}>
        <View style={styles.container}>
            <MapView style={{
                width: Dimensions.get('window').width,
                height: Dimensions.get('window').height
                }}                    
                initialRegion={{
                    latitude: place.latitude,
                    longitude: place.longitude,
                    longitudeDelta: 0.01,
                    latitudeDelta: 0.01
                }}>

                <Marker
                    coordinate={{
                        latitude: place.latitude,
                        longitude: place.longitude
                    }}/>
                
                <Marker
                    title="Sua localização"
                    coordinate={{
                        latitude: location && location.coords.latitude,
                        longitude: location && location.coords.longitude
                    }}/>
            </MapView>
            <Text style={styles.txtStyle}>{text}</Text>
        </View>
    </ImageBackground>
)

}

yhxst69z

yhxst69z1#

要绘制一个标记,经度和纬度是必须的,也是必需的属性。您的纬度和经度在这里为空

<Marker
                coordinate={{
                    latitude: place.latitude,
                    longitude: place.longitude
                }}/>

因此,只有当你有坐标时才画标记,使用类似这样的东西:-

{(place.latitude && place.longitude) ? <Marker
                coordinate={{
                    latitude: place.latitude,
                    longitude: place.longitude
                }}/> : null
}

相关问题