最佳方式将地理位置坐标存储到WebSQL数据库中,并在输出后在Google地图中使用。

15 浏览
0 Comments

最佳方式将地理位置坐标存储到WebSQL数据库中,并在输出后在Google地图中使用。

有人能推荐一种最佳的格式将地理位置坐标存储到websql数据库中吗?是将值从数组中提取出来并以以下格式存储:(52.8165972, -2.1174389000000247),(52.8165972, -2.1174389000000247),(52.8165972, -2.1174389000000247),其中每一对括号表示一组坐标(lat,lng),还是将纬度和经度值分别存储在它们自己的独立列中会更好?

请注意,我将使用存储在此数据库中的坐标来在Google地图上绘制折线。我目前使用上述结构的原因是,Google地图期望路径值的格式为(lat, lng)。

当前的问题是从数据库列输出所有值时,是否可能以(52.8165972, -2.1174389000000247)的格式输出,这样可能更容易处理。

非常感谢任何建议!

编辑:关于整个项目的其他信息

我正在构建一个应用程序,旨在跟踪用户在步行过程中的位置。跟踪和实时绘制折线的机制都完美运作。在“完成”步行后,用户将进入第二个屏幕,可以添加附加详细信息,如步行标题、描述。折线路径等信息从数组输出到地图上,以便用户可以看到它。在该页面上“保存”后,所有数据都将从该会话的数组和该页面上输入的任何信息收集,并存储到表中的自增行中。

还有一个页面,用户可以查看他们所参与的所有步行活动,这将列出所有单独的步行详细信息,并显示带有该特定步行活动的折线的地图。

0
0 Comments

问题的原因是需要将地理位置坐标存储到websql数据库中,并且在输出后能在Google Maps中使用。解决方法是将整个折线存储在单个列中,并使用JavaScript将其拆分为点。此外,还可以创建一些附加的列来描述折线所适合的边界框和/或其中心点。

我们有几种选项。我们可以将它们分开成单独的点(纬度/经度对),并将每个点存储在自己的列中,但这将需要创建与最长折线中的点数相同的列。这样查询会更困难。我们还可以将每个点的对拆分成纬度列和经度列,这将是前一个选项,但列数增加一倍。或者我们可以将整个折线存储在单个列中。我建议选择最后一种选项,因为它会产生更可预测的数据库结构。尽管以纬度/经度数据查询不太容易,但如果无法忽略该问题,还有解决办法。如果您需要通过坐标查询数据库,建议创建一些额外的列,描述折线适合的边界框和/或其中心点。这些将以小数形式存储。根据您的应用程序所需的精度,可以参考这篇文章:How accurately should I store latitude and longitude?。这将允许您在一个粗略的区域内搜索线条或点,然后可以使用JavaScript进一步细化搜索。

目前,我正在将整个折线存储在单个列中,例如(52.8165972, -2.1174389000000247),(52.8165972, -2.1174389000000247),(52.8165972, -2.1174389000000247),这是使用一个使用googleLatLng.push(new google.maps.LatLng(lat, lng));构建的数组,它将坐标存储为折线可使用的格式(我想)。

如果我按照上面的评论所述将其存储到数据库中,是否可能按照特定格式从数据库中提取?因为我需要在每对坐标之后的逗号后分割。

这种方法肯定可以节省将折线拆分和重新组装的代码的时间。如果您想要在数据库中搜索靠近给定坐标的折线,您至少需要计算每条线的近似中心(计算线的平均纬度和平均经度应该可以工作),并将这些中心纬度和中心经度点分别存储在自己的小数列中。

我处理的方式是从数据库中选择整个折线,并使用JavaScript将其拆分为点。通常情况下,将工作从服务器加载到客户端的Web浏览器中通常是有益的。

您知道在JavaScript中有哪些最佳函数可用于在每对坐标之后拆分它吗?

给定一个包含上述折线的字符串,命名为polystring,可以使用polystring.split("),("),它将返回一个字符串数组,这些字符串是坐标点。所有中间部分的括号将被去除,但请注意,第一个字符串仍将以(开头,最后一个字符串将以)结尾,您可以在拆分之前使用polyline.substr将其修整。如果需要,您可以再次在每个点上拆分它们以获取纬度和经度。

让我们在聊天中继续讨论

0