我在让react-native-maps在android上正常工作时遇到了问题。问题是,当我加载数组数据时,它仅适用于 IOS。它生成如下:
const locationData = [
{latitude: "52.4194975", longitude: "-1.5101260"},
{latitude: "52.403002", longitude: "-1.491740"}
];
它是使用 PHP 从 MYSQL 数据库生成的。
我像这样显示标记:
{locationData.map((data, index) => (
<Marker
key={index}
coordinate={{
latitude: data.latitude,
longitude: data.longitude
}}
/>
))}
当我使用它时,它可以在 IO 和 Android 上运行:
const locationData = [
{latitude: 52.4194975, longitude: -1.5101260},
{latitude: 52.403002, longitude: -1.491740}
];
但是如果我使用它,它在 Android 上不起作用,但在 IOS 上可以:
const locationData = [
{latitude: "52.4194975", longitude: "-1.5101260"},
{latitude: "52.403002", longitude: "-1.491740"}
];
很明显这是因为“”我尝试添加这些但它们不起作用?
latitude: data.latitude,replace('"', '')
latitude: data.latitude,str.replace('"', "")
有解决方法还是我遗漏了什么?谢谢
使用 parseFloat 将字符串转换为浮点数,如下所示:
const locationData = [
{ latitude: "52.4194975", longitude: "-1.5101260" },
{ latitude: "52.403002", longitude: "-1.491740" },
];
const coordinates = locationData.map(c => {
return {
latitude: parseFloat(c.latitude),
longitude: parseFloat(c.longitude),
};
});
当然,最好的解决方案是从后端返回已经存在的数字,以避免客户端中的任何转换。