我正在为手机(iPhone)开发商店定位器网络应用程序。这个想法是标准的,设备使用其地理定位功能来确定位置,然后应该在地图上显示5-10个最近的商店。我的问题基本上是我有太多的商店(10.000+)并且还没有能够创造一个很好的用户体验。
我意识到这可能有点问题,但我很想听听你对此的看法......
问题范围:
i)我认为我只能一次加载一些标记而不是所有标记,我发现很多< 100 store-finder应用程序都可以。
ii)应该是连接友好不好:例如谷歌地图不应该放大和缩小,导致新的瓷砖加载(以及空白屏幕显示连接是否坏)
iii)它必须以某种方式应对这样一个事实:设备gps /塔三角测量可能很慢,无法准确定位你的位置(如果在室内或在农村地区,通常需要一两分钟)
解决方案我尝试过:
I)使用getCurrentPositition并从该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秒。
答案 0 :(得分:2)
我不知道watchCurrentPosition是什么,我会假设你想说watchPosition;这是在HTML5地理位置规范中定义的。
我不会使用watchPosition
。技术上defined跟踪位置变化,这不一定转化为准确度的提高。虽然我不是移动设备功耗的专家,但我敢打赌,它使用更多的功率来启动GPS并保持开启,而不是获得1个非常好的定位,这就是getCurrentPosition
专为。
如果这实际上是GPS /传感器修复时问题,我会感到惊讶。许多网站使用getCurrentPosition
来查找用户的当前位置,大多数移动设备可以在几秒钟内完成,与AJAX调用没有太大区别。我会使用PositionOptions
settings来设置合理的超时时间,maxAge,并使用enableHighAccuracy值。
如果您的10K商店在半径2-5英里范围内,那么您肯定会遇到一个难题:-D,但是否则您从Geolocation API返回的数据应该能够缩小它以合理的准确度在少数几家商店中销售。 Geolocation API可能不会返回表示您的确切街道地址的纬度/经度,但它应该会在正确的城市中为您提供位置,如果不是街道集群。
我将此分解为两个问题:1 - 通过Geolocation API获得可接受的准确位置(lat,lng)。 2 - 寻找靠近位置(纬度,纬度)的商店。如果您遇到第1部分或第2部分的问题,那么提出重点问题要容易得多