为什么在 Android 上使用带有“”的数组时,react-native-maps 不起作用

问题描述 投票:0回答:1

我在让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('"', "")

有解决方法还是我遗漏了什么?谢谢

arrays json react-native react-native-maps
1个回答
0
投票

使用 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),
  };
});

当然,最好的解决方案是从后端返回已经存在的数字,以避免客户端中的任何转换。

© www.soinside.com 2019 - 2024. All rights reserved.