javascript - 如何调整已使用 `alignItems` 和 `justifyContent` 垂直和水平居中的组件的位置?
问题描述
我的目标是调整Icon
组件以指向确切的坐标。当前的解决方案确实使Icon
组件垂直和水平居中。Marker
但与组件相比,它不够精确。
当前的解决方案是向 Icon 组件添加样式,top=-20
但我认为这不是正确的解决方案。我相信top=-20
仅针对我的设备,不同的设备会导致不同的结果。
我尝试使用该Marker
组件,但我还没有弄清楚如何防止每次有状态更新时重新渲染。注意:不重新渲染标记不会改变位置。
import React from 'react';
import {StyleSheet, View} from 'react-native';
import MapView, {Marker, PROVIDER_GOOGLE} from 'react-native-maps';
import Icon from 'react-native-vector-icons/FontAwesome5';
const styles = StyleSheet.create({
container: {
...StyleSheet.absoluteFillObject,
justifyContent: 'center',
alignItems: 'center',
},
map: {
...StyleSheet.absoluteFillObject,
},
});
export default function GoSendDestinationDetails() {
let coordinate = {
latitude: -6.1754,
longitude: 106.8272,
latitudeDelta: 0.015,
longitudeDelta: 0.0121,
};
const handleRegionChange = (region) => {
// console.log(region);
coordinate = region;
};
// console.log('re-render');
return (
<View style={{height: '100%', width: '100%'}}>
<View style={[styles.container, {height: '50%', width: '100%'}]}>
<MapView
provider={PROVIDER_GOOGLE} // remove if not using Google Maps
style={styles.map}
initialRegion={coordinate}
onRegionChange={handleRegionChange}>
<Marker coordinate={coordinate} />
</MapView>
{/* TODO: use gojek assets */}
<Icon name="map-marker-alt" size={36} color="orange" />
</View>
</View>
);
}
解决方案
您应该使用带有所需坐标的标记内的图标:
<Marker coordinate={coordinate}>
<Icon name="map-marker-alt" size={36} color="orange" />
</Marker>
这将使图标保持在您需要的位置。
推荐阅读
- node.js - npm 命令给出语法错误:意外令牌(mac)
- php - TCPDF - 删除 2 个表之间的空间 (PHP)
- python - 如何在 python alexa 中使用 AMAZON.Repeat Intent?
- vba - 将第一个列表的每个元素与第二个列表的所有元素进行比较以找到匹配项
- ethereum - 无法在 BSC MAIN NET 上验证合约源代码。“发生错误异常 err_code_1:错误 - 无法连接到远程服务器”
- java - 需要帮助是使用 maven 配置文件排除包含 junits 的包
- timer - ST32CubeMx 配置的一种脉冲模式
- mongodb - 较旧的 oplog 条目不会被截断
- android - RecyclerView:没有附加适配器;在显示移动联系人的片段中跳过布局
- tableau-api - 如何忽略画面中的聚合和非聚合错误?