我正在致力于一个网站,用户将能够注册和提供他们的位置的信息。为了防止用户输入不正确的数据,我们不希望用户提供自由文本信息,而是尽可能多地从预定义的值中选择。我们认为提供这些值的方法有两种:向外部服务提供者使用API或创建您自己的local database。
一些资源:
优点:
-accuracy和数据的完整性。
-no维护与数据更新有关,因为它由API处理。
-更容易/更快地开始(不需要创建本地数据库,只需实现API)。
缺点:
当外部API出现可用性问题时,性能的-degradation。
由于外部API的更改而导致的-outage (直到您的代码被更新以反映这些更改)。
-与外部提供者的锁定。
一些资源:
优点:
-no外部依赖:提高稳定性和性能。
缺点:
-more要开始工作(您需要创建数据库和代码来与其交互)。
-risks的不准确/不完整的数据,无论是最初的还是长期的。
-more维护工作,保持数据库的更新。
假设要求用户提供的深度信息如下:
-country:对价值感兴趣。也用来缩小区域列表。
-region (美国的州,英国的郡.):对价值本身不感兴趣,只是用来缩小城市的范围。
-city:对价值感兴趣(如果我们需要区域统计数据,可以用来计算相关区域)。
-address:对价值感兴趣,尽管是可选的。
API还是local database)?你会给你什么实现的提示?您还可以共享哪些其他资源?发布于 2012-03-18 14:51:44
虽然我的IP是动态的(DHCP),但它对我的城市从来没有准确的时候,城市可以在60英里之外。如果你的应用是强迫用户到那个城市,你将有一个很高的反弹率。
您最好的选择是使用MaxMind IP到本地存储的、比API更快的国家数据库。在幕后收集IP的国家不会强迫用户提供它。然后从另一个数据库中收集该区域,而不是当用户注册时。
当向用户询问这类信息并试图自动生成它并将其与数据库进行比较时,您会遇到很多离开您的站点的人。对于那些支持代理、VPN或者运行Tor的人,会发生什么呢?
发布于 2012-03-19 14:12:34
我要再次强调确认你收集的信息的重要性。毕竟,如果它足够重要,收集它,你最好确保它是正确的,针对正确的权威/来源。如果它没有那么重要,为什么要收集它并让用户负担呢?
我为SmartyStreets工作,在那里我们验证用户的位置,特别是他们的地址,所以我解决了一些类似的问题。接下来,我建议API是为您提供价值的最健壮的解决方案。换句话说,从正反两方面来看,区别是很明显的:构建本地数据库比使用专业API的成本要高得多,副作用也很小。
实现准确用户地理位置最有效的方法之一是从他们那里收集特定的、正确的信息。虽然许多人收集地址,但很少有人确定这是一个真正存在的正确地址。谷歌和雅虎以及类似的服务不提供这样的服务:当心他们执行地址近似而不是验证,而且他们的结果是最好的猜测。
对于美国地址,美国邮政总局( USPS 卡斯-certifies )向其他人提供他们的权威地址和位置数据。你可以自己搜索这些地址,但是你要寻找的是类似LiveAddress API的东西,它将验证和定位美国地址。
我可以告诉您,我们已经投入了大量的资源来构建和维护数据库、风险以及您在构建自己的数据库时提到的其他缺点。我们还解决了您列出的关于API的缺点。有关详细信息,请参阅二语习得,并请记住,我们是唯一的供应商,其API是地理分布在3个冗余数据中心,以确保性能和正常运行时间。换句话说,它运行得很快,请求被并行处理。
使用现代(HTML5等)地理定位功能在一定程度上是准确的,但即使是现在,它们的兼容性也仅限于理想环境下更现代的浏览器(我在爱荷华州长大,那里的地理位置与城市地区相去甚远)。但是,如果确实有必要的话,获取和验证用户地址是获取所需内容的一种可靠方法。这就是我会做的。
发布于 2020-08-25 17:55:37
如果您想以最佳地址访问访问者的国家、地区和城市数据,有两种方法。
首先,您可以使用IP地理定位服务。它根据访客的身份信息来检测访客的位置。这很简单,但只有国家/州/城市级别的数据是可用的。而且,如果访问者使用VPN或代理(它为访问者分配一个指向另一个物理位置而不是实际位置的IP ),这种数据将不准确。在营销策略的实施中,它仍然是颇受欢迎的。
其次,如果精度是您的优先考虑,您可以考虑HTML5地理定位API。它访问访问者的准确纬度/经度数据。您可以实现geocode API,以进一步获取访问者的详细位置数据,甚至有街道地址。限制是它需要访客的许可,分享他们的位置。有些用户可能不愿意这样做。此外,它还没有得到所有浏览器的广泛支持。
https://webmasters.stackexchange.com/questions/27451
复制相似问题