You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

react-native-maps在Android中使用字符串坐标数组失效问题求助

React Native Maps Android标记不显示:字符串坐标转数值解决方案

问题核心:react-native-maps在Android平台要求coordinate的latitude和longitude必须是数值类型,iOS会自动隐式转换字符串为数值,所以iOS能正常显示标记,而Android无法识别字符串类型的坐标。

你之前尝试的replace('"', '')操作完全无效,因为从MySQL经PHP返回的JSON解析后,data.latitude的值是不带外层引号的字符串(引号是JSON语法的一部分,解析后已被移除),问题本质是类型不匹配,而非字符串包含引号。

可行解决方法

方法1:渲染Marker时直接转换类型

在设置coordinate时,用parseFloat()将字符串坐标转为浮点数:

{locationData.map((data, index) => (
  <Marker
    key={index}
    coordinate={{
      latitude: parseFloat(data.latitude),
      longitude: parseFloat(data.longitude)
    }}
  />
))}

方法2:预处理数据(推荐)

提前将整个数组的字符串坐标转为数值,避免每次渲染重复执行转换操作:

// 预处理坐标数组
const processedLocationData = locationData.map(item => ({
  latitude: parseFloat(item.latitude),
  longitude: parseFloat(item.longitude)
}));

// 使用处理后的数组渲染标记
{processedLocationData.map((data, index) => (
  <Marker
    key={index}
    coordinate={{
      latitude: data.latitude,
      longitude: data.longitude
    }}
  />
))}

额外优化:从PHP端解决

如果可以修改PHP代码,建议在生成JSON时直接将坐标转为数值类型,前端无需额外处理:

// PHP示例:将数据库取出的字符串坐标转为浮点数
$locationData = [];
while ($row = $result->fetch_assoc()) {
    $locationData[] = [
        'latitude' => (float)$row['latitude'],
        'longitude' => (float)$row['longitude']
    ];
}
echo json_encode($locationData);

内容的提问来源于stack exchange,提问作者JulesUK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:43:16