在应用程序中使用大量位置详细信息的有效方法是啥

Posted

技术标签:

【中文标题】在应用程序中使用大量位置详细信息的有效方法是啥【英文标题】:What is an efficient way of using large set of locations details in an application在应用程序中使用大量位置详细信息的有效方法是什么 【发布时间】:2021-02-16 03:07:46 【问题描述】:

我正在努力提高我的应用性能。我有一个带有 ~ 25k 标记的 SQL + php 服务器。该网站在 wordpress 上运行,因此它们作为 Posts 对象存储在具有 ID 和标题的表中,其他详细信息(纬度、经度、描述、评级、类型、元素、..10+ 其他信息)存储在另一个 post_meta 表中。

我正在尝试找到一种在 android/ios 地图上显示这些标记的有效方法。当前的实现是,当用户单击按钮或移动到很多并在地图上停止时,它会使用屏幕的边界框向我的 php 服务器发出请求,该服务器检索我的数据库中的信息并发回一个 json 文件. 如果我希望用户不等待标记显示并获得良好的用户体验,我有一些限制。我需要阻止用户的缩放,这样它就不会有太大的边界框,也不会检索太多的标记,或者我必须限制我随请求返回的信息数量(只有标题和纬度/经度)。

但是,如果我想在地图上设置一些客户端过滤器选项(例如类型、平均评分、元素、图片与否……),我无法仅检索标题和纬度/经度,否则我将不得不检索每次用户选择/取消选择过滤器时重新发出请求...我希望在客户端有过滤器。

我不显示关于标记的任何信息,除了地图上的纬度/经度,除非他点击标记,然后我会加载包含所有详细信息的工作表视图。

我没有像 google 或类似应用程序那样执行大型服务器端集群的科学和服务器设备,但我仍然希望我的用户在他们的移动设备上拥有良好的体验。

我想到的一个解决方案是提出两个请求,一个用于标题 + lat/lng,一个适合我的过滤器选项。用户将很快看到地图上的所有标记,但必须等待几秒钟才能使用过滤器?

你认为我应该坚持我的限制吗(服务器端过滤器或返回所有数据但阻止用户使用最大缩放 + 限制要检索的标记数量)?或者您是否提出了我的猴脑(以及我同事的两个大脑)还没有提出的其他建议?

如果您需要更多解释或示例,请随时询问关键性能。

非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

如果要限制地图的缩放级别,可以使用以下代码:

  let camera = GMSCameraPosition.camera(
  withLatitude: 41.887,
  longitude: -87.622,
  zoom: 12
)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
mapView.setMinZoom(10, maxZoom: 15)

在您的 API 中,您可以有一个边界框,或者一个带有缩放参数的中心纬度和经度。

【讨论】:

以上是关于在应用程序中使用大量位置详细信息的有效方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

Canvas 与 DOM - HTML5 中最有效的图像显示方法是啥?

将样式应用于大量项目的最佳方法是啥?

在 Laravel 4.2 中保护视图的最有效方法是啥?

在 SQLCe 数据库中存储对象的最有效方法是啥?

有啥方法可以清除已经从安卓设备手动捕获的位置详细信息?

在 PHP 中保持 MySQL 凭据私有的最佳方法是啥?