最好的移动商店定位器解决方案,有10000多个标记

Best mobile store locator solution with 10.000+ markers

本文关键字:10000 解决方案 移动 定位器      更新时间:2023-09-26

我正在为移动设备(iPhone)开发一个商店定位器web应用程序。这个想法是标准的,该设备使用其地理定位功能来确定位置,然后应该在地图上显示5-10家最近的商店。我的问题本质上是我有太多的商店(10.000+),还没能创造出一个好的用户体验。

我知道这个问题可能有点多,但我很想听听你对此的看法。。

问题范围:

i) 我想我只能一次加载一些标记,而不是所有标记,我发现很多<100商店查找应用程序做。

ii)它应该是对不良连接友好的:例如,谷歌地图不应该进行非必要的放大和缩小,从而导致加载新的瓦片(以及显示连接是否不良的空屏幕)

iii)它必须以某种方式应对这样一个事实,即设备gps/塔三角测量可能很慢,无法足够准确地确定你的位置(如果在室内或农村地区,通常需要一两分钟)

我尝试过的解决方案:

I) 使用getCurrentPositionation,并从该lat/lng负载中选择5个最接近的标记。问题:快照定位不准确,通常加载了"错误"的5个存储。

II) 使用watchPosition直到精度达到<100m,然后装载最近的5个标记。问题:通常需要很长时间才能获得职位(通常>1分钟),这不是一个好的用户体验。

III) 与II相同,只有标记在找到准确位置时被连续加载。问题:每次更新时,使用fitbounds()或panTo()都会变得非常"跳跃"。也就是说,如果用户试图在地图仍处于"查找位置"模式时点击标记,他们将被地图改变边界和加载更多标记所干扰。

IV) 使用watchPosition和固定缩放将边界拟合到近似位置,并使用地图中心获取最近的存储。当watchPosition找到一个更好的近似中心或用户自己平移地图时,不断加载标记。问题:同样,有点紧张,因为watchPosition更新了很多。没有"你的位置"标记。

背景信息:

我使用了很多标准的谷歌方法来创建商店查找器,如下所示:http://code.google.com/intl/sv-SE/apis/maps/articles/phpsqlsearch.html

Google Maps v3 API,MySQL数据库,Haversine公式,JSONP标记数据的异步加载,无库(jQuery等)。用这种方法加载5-10个新标记通常需要不到1秒的时间。

我不知道watchCurrentPosition是什么,我想你是说watchPosition;其在HTML5地理定位规范中定义

  • 我不会为此使用watchPosition。从技术上讲,它被定义为跟踪位置的变化,这并不一定意味着精度的提高。虽然我不是移动设备功耗方面的专家,但我敢打赌,它启动GPS并使其保持开启所需的功率要比获得1个真正好的定位所需的功耗大得多,而这正是getCurrentPosition的设计目的。

  • 如果这真的是GPS/传感器修复时间问题,我会感到惊讶。许多网站使用getCurrentPosition来查找用户的当前位置,大多数移动设备可以在几秒钟内完成,这与AJAX调用没有太大区别。我会使用PositionOptions设置来设置合理的超时值maxAge,并使用enableHighAccuracy值。

  • 如果你的10K商店位于2-5英里半径范围内,那么你肯定会遇到一个难题:-D,但除此之外,你从Geolocation API获得的数据应该能够在合理的精度范围内缩小少数商店的范围。地理定位API可能不会返回代表您确切街道地址的lat/lng,但它应该会为您提供正确城市内的位置,如果不是街道群的话。

  • 我将其分解为两个问题:1-通过API地理定位获得可接受的准确位置(lat,lng)。2-在位置(lat,lng)附近寻找储存。如果你在第1部分或第2部分中遇到问题,那么提出重点问题会容易得多