I am trying to use Sitecore 8.1's Geolocation service to detect customer's location and serve correct site context.
Is there an API from them that I can use programmatically? Any sample code?
I am trying to use Sitecore 8.1's Geolocation service to detect customer's location and serve correct site context.
Is there an API from them that I can use programmatically? Any sample code?
On
The Sitecore Marketplace also has the MaxMind GeoIP2 Custom Lookup Provider module as well which uses the MaxMind GeoIP2 City Database API without requiring xDB https://marketplace.sitecore.net/en/Modules/M/MaxMind_GeoIP2_CustomLookupProvider.aspx
On
Above is correct, you should avoid calling GeoManager, which is given as an example in many places, but messes with the analytics. You should be calling LookupManager.GetInformationByIP(ip);, which resolves the IP and uses the GeoIP cache.
We ran into this same issue when we were trying to leverage the Geo IP data in a Sitecore pipeline, as the GeoData is not yet available at that point by default.
Documented this at: http://edgebytes.com/2016/09/08/calling-sitecore-geo-ip-location-service/
You really shouldn't. The service isn't meant to be called synchronously in your page requests - holding up the site page delivery until you have an answer. It simply won't perform very well.
Sitecore Marketplace offers the GeoLite Resolver (Github link: https://github.com/adoprog/Sitecore-Geo-Lite-Resolver), and while this is fairly old it can still be included and compiled in your Sitecore 8 projects just fine.
It basically uses an offline light copy of the MaxMind database - good enough to solve country resolution (but not city) - and can respond very fast (<10ms) to a lookup.