Enterprise Facility Map Searching
Recently I have been looking at an interesting enterprise problem – providing a mobile enabled facilities application. The idea is that we have a vetted list of between 100 and 1000 facilities for the company stored in a database. If an employee hits our mobile application, we can interrogate it for current geographical location information and, in theory, show them the facilities nearest them. Sounds simple, right? I mean Google does this all the time.
Let’s take a step back and define our problem.
1) We know the user’s current location (using geo-location on the device)
2) We have our own proprietary database of 100-1000 addresses that are vetted and maintained as real facilities.
3) We want to compare the user’s current location to that database of addresses on the fly and determine the ones within proximity
Item #1 is clearly solved 100 times over. I see the confluence of #2 and #3 as our real issue. If #2 were simply the public Google search on McKesson near 34.089203, -85.2593 (the Marriott), it would be easy. This works fine for retail establishments where weighting can be given to a location, but it’s simply too inaccurate for what is being passed off as an authoritative list of corporate facilities. In my case, we have a vetted list of facilities whereas the Google search includes outdated real estate, home offices, etc.
On the server side, we could blow through N map searches using starting location as the user’s current location and N[x] address from the database. I see one main risk here: we would not have an SLA in place, and someone may approve using this as a mission critical location system. Stranger things have happened. I think this can be mitigated with strong messaging, but it’s still a risk.
An example implementation of this could be using MapQuest. They have an OpenAPI that is free for use (requires registration w/ MapQuest and attribution on pages that use it). Each of the queries would look something like this:
This example is from the nearby Marriott to Windward HQ. The response contains a distance: element that will tell us how far away they are (1.17 miles in this case). The only data translation that would need to be done is to pre-geocode the addresses in our database.
Is this the right solution? I don’t know, but it’s A solution to a complicated problem.