我正在努力提高我的应用程序性能。我有一个SQL+Php服务器,大约有25k个标记。网站在wordpress上运行,因此它们作为Posts对象存储在一个带有ID和标题的表中,其他详细信息(纬度、经度、描述、评级、类型、元素等(存储在另一个post_meta表中。
我正试图找到一种有效的方式来在安卓/iOS地图上显示这些标记。目前的实现是,当用户点击一个按钮或移动到地图上并停止时,它会用屏幕的边界框向我的php服务器发出请求,后者会检索我数据库上的信息并发回一个json文件。如果我想让用户不等待标记显示,并拥有良好的用户体验,我有一些限制。我需要阻止用户的缩放,这样它就不会有太大的bouding框,也不会检索到太多的标记,或者我必须限制我随请求返回的信息数量(只有标题和lat/lng(。
但是,如果我想在地图上有一些客户端过滤器选项(比如类型、平均评级、元素、图片等(,我不能只检索标题和纬度,或者每次用户选择/取消选择过滤器时,我都必须重新生成请求。。。我希望在客户端有过滤器。
除了地图上的纬度/经度,我不会显示任何关于标记的信息,除非他点击标记,然后我会加载一个包含所有细节的图纸视图。
我没有像谷歌或类似的应用程序那样执行大型服务器端集群的科学和服务器设备,但我仍然希望我的用户在他们的手机上有良好的体验。
我考虑过的一个解决方案是提出两个请求,一个是标题+纬度/液化天然气,另一个适合我的过滤器选项。用户将很快看到地图上的所有标记,但必须等待几秒钟才能使用过滤器?
你认为我应该坚持我的限制吗(服务器端过滤或返回所有数据,但阻止用户进行最大缩放+限制要检索的标记数量(?还是你提出了其他我的猴子大脑(和我同事的两个大脑(还没有适应的建议?
如果你需要更多的解释或一些例子,请随时询问关键性能。
非常感谢你的帮助!
如果您想限制地图上的缩放级别,可以使用以下代码:
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中,您可以有一个边界框,或者一个中心纬度&带缩放参数的经度。