以编程方式访问地理定位服务

时间:2016-08-11 00:49:22

标签: sitecore sitecore8 sitecore-xdb

我正在尝试使用Sitecore 8.1的地理位置服务来检测客户的位置并提供正确的网站背景。

是否有可以通过编程方式使用的API?任何示例代码?

4 个答案:

答案 0 :(得分:2)

你真的不应该。该服务并不意味着在您的页面请求中同步调用 - 在您有答案之前阻止网站页面传递。它根本不会表现得很好。

Sitecore Marketplace提供了GeoLite解析器(Github链接:https://github.com/adoprog/Sitecore-Geo-Lite-Resolver),虽然这已经相当陈旧,但它仍然可以在Sitecore 8项目中包含和编译。

它基本上使用MaxMind数据库的离线轻量级副本 - 足以解决国家/地区分辨率(但不是城市) - 并且可以非常快速地(<10ms)响应查找。

答案 1 :(得分:1)

您需要Sitecore.Analytics.Lookups命名空间。 Sitecore.Analytics.Lookups.GeoIpManager.GetGeoIpData应该让你开始。

请记住,基于GeoIP数据的框中已经存在一些规则和条件。它也可以(重新)使用它们。

答案 2 :(得分:0)

Sitecore Marketplace还具有MaxMind GeoIP2自定义查找提供程序模块,该模块使用MaxMind GeoIP2城市数据库API,无需xDB https://marketplace.sitecore.net/en/Modules/M/MaxMind_GeoIP2_CustomLookupProvider.aspx

答案 3 :(得分:0)

上面的说法是正确的,你应该避免调用GeoManager,GeoManager在许多地方都是一个例子,但是对分析很困惑。您应该调用LookupManager.GetInformationByIP(ip);,它解析IP并使用GeoIP缓存。

我们在尝试利用Sitecore管道中的Geo IP数据时遇到了同样的问题,因为默认情况下GeoData尚不可用。

记录于:http://edgebytes.com/2016/09/08/calling-sitecore-geo-ip-location-service/