提问人:Eric 提问时间:11/5/2023 更新时间:11/8/2023 访问量:99
GooglePlacesAutocomplete 在 react-native apk 文件中不起作用 android
GooglePlacesAutocomplete not working in react-native apk file for android
问:
我在我的 react native 项目中实现了 Google Places API,我正在尝试使用 查询地点搜索,但对于 android,它仅在使用 expo 进行测试时有效,当我构建测试 apk 并安装在真实设备上时,没有返回结果并且 GooglePlacesAutocomplete 不起作用。我很难跟踪这个错误,因为在开发环境中一切都很完美。拜托,我真的需要帮助。以下是我查询谷歌地点的方式GooglePlacesAutocomplete
return (
<SafeAreaView style= {{backgroundColor: 'white', height: "100%"}}>
<View >
<Text style ={{ color: 'black',
fontWeight:'bold',
fontSize: 25,
padding: 10}}>Lets Move it!</Text>
<GooglePlacesAutocomplete
placeholder='Move from?'
styles={{
container: {
flex: 0,
},
textInput: {
fontSize: 18,
backgroundColor: 'white',
borderWidth: 1,
padding: 8,
margin: 8,
borderColor: '#a29e9e11'
}
}}
onPress={(data, details = null) => {
dispatch(setOrigin({
location: details.geometry.location,
description: data.description
}))
dispatch(setDestination(null))
}}
fetchDetails ={true}
enablePoweredByContainer={false}
query={{ key: GOOGLE_MAPS_APIKEY, language: 'en'}}
nearbyPlacesAPI='GooglePlacesSearch' debounce={400}
/>
</View>
<View style ={{flex:1}}>
<BottomView />
</View>
</SafeAreaView>
)
}
答:
0赞
Anil Ravsaheb Ghodake
11/8/2023
#1
你能试试我实现的以下组件吗,它适用于模式调试和发布,(你可以根据你的应用程序样式更改一些样式,并需要处理添加的图像)
return (
<SafeAreaView style={{flex: 1}}>
<TouchableOpacity style={{flexDirection: 'row', alignItems: 'center', top : 37,width:40,height:40, paddingLeft : 15, zIndex:10}}
onPress={()=>{
navigation.goBack();
}}>
<Image
source={require('../assets/images/backIcon.png')}
style={{height: 35, width: 35}}
/>
</TouchableOpacity>
<GooglePlacesAutocomplete
placeholder="Enter your search query"
placeholderTextColor="#8189B0"
query={{
key: YOUR_API_KEY,
language: 'en',
}}
textInputProps={{
ref: textInput => {
textInput && textInput.focus();
},
}}
returnKeyType={'Search in Google'}
listViewDisplayed={'auto'}
fetchDetails={true}
onPress={(data, details) => {
console.log('Data=>', JSON.stringify(data));
console.log('Details=>', JSON.stringify(details));
navigation.goBack();
}}
renderRow={rowData => {
const title = rowData.structured_formatting.main_text;
const address = rowData.structured_formatting.secondary_text;
return (
<View
style={{
flexDirection: 'row',
alignItems: 'center',
width: width - 80,
paddingBottom: 10,
paddingTop: 10,
}}>
<Image
source={require('../assets/images/Location.png')}
style={{width: 35, height: 35}}
resizeMode={'contain'}
/>
<View style={{height: 40, marginLeft: 8}}>
<Text
style={{color: '#0D1A59', fontSize: 16, paddingRight: 10}}
numberOfLines={1}>
{title}
</Text>
<Text style={{fontSize: 12, color: 'rgba(13, 26, 89, 0.65)'}}>
{address}
</Text>
</View>
</View>
);
}}
nearbyPlacesAPI="GoogleReverseGeocoding"
debounce={300}
autoFocus={true}
enablePoweredByContainer={false}
keyboardShouldPersistTaps="always"
suppressDefaultStyles={true}
styles={{
container: {
flex: 1,
},
textInput: {
height: 40,
color: '#2E3E5C',
width: 300,
fontSize: 14,
alignSelf: 'center',
borderRadius: 8,
paddingHorizontal: 15,
marginLeft : 30,
backgroundColor: '#EFEFEF',
},
listView: {
display: 'flex',
top: 50,
width: '93%',
alignSelf: 'center',
borderRadius: 8,
height: height * 0.7,
},
row: {
paddingLeft: 13,
height: 60,
flexDirection: 'row',
},
poweredContainer: {
justifyContent: 'flex-end',
alignItems: 'center',
borderBottomRightRadius: 5,
borderBottomLeftRadius: 5,
borderColor: '#c8c7cc',
borderTopWidth: 0.5,
},
}}
/>
{/* </View> */}
</SafeAreaView>
);
评论
0赞
Eric
11/9/2023
我认为我的 Google API 或其他东西有问题。因为我刚刚复制了您的代码,并且它在测试时可以像我的一样工作,但是当我使用 expo 构建 api 并安装在我的 android 设备上时,当我键入时它不会产生任何结果
0赞
Eric
11/9/2023
我必须限制我的 API 吗?
0赞
Anil Ravsaheb Ghodake
11/10/2023
你说的是哪个 API?
0赞
Eric
11/10/2023
我的意思是我的谷歌api密钥
0赞
Anil Ravsaheb Ghodake
11/13/2023
不,无需限制 API 密钥。但请确保为 Android 平台启用了 API 密钥并与计费帐户连接。
评论