45

I'm creating an events app where users can host events at their place and invite people. I want the list of hosted events to be publicly viewable on a map, designated by some icon. BUT, public event locations will be obfuscated by +1/-1 miles for both latitude and longitude. If you get invited to an event, you'll receive the actual address. This is to protect user's home address.

Seeing as how markers are used to indicate exact location, they seem inappropriate for obfuscated locations. I want users to get a feel of the general area of the event. I was thinking some sort of half transparent, circle figure, whose center is on the obfuscated lat/lng position.

What would be the best shape/icon for representing an "area" on the map?

  • 61
    What do you do if I want to plan my event on my farm, where for miles around it there is nothing but farmland? – PlasmaHH Jun 13 '17 at 6:42
  • 79
    "I was thinking some sort of half transparent, circle figure, whose center is on the obfuscated lat/lng position." Then the position isn't unknown anymore -- it's the exact center of the obfuscated area! – dr01 Jun 13 '17 at 7:38
  • 18
    Look at how AirBnB solved the problem. Make sure to move the center of the circle as well. – Ajasja Jun 13 '17 at 9:19
  • 58
    "Closest public transport stop" is a reasonable way to indicate approximate location, with the added bonus that it automatically adjusts for population density. @PlasmaHH will be safe. To turn it into an area, you'd need something like a Voronoi map. – MSalters Jun 13 '17 at 10:23
  • 18
    Careful! anything you do here will run up against the deanonymizing problem the US Census Bureau knows as the *South Asian female jazz singer in North Platte Nebraska" problem. Even acknowleging the existence of the category most likely reveals confidential information about one or two persons. The problem you're tackling is hard. – O. Jones Jun 13 '17 at 19:32

12 Answers 12

51

I would not use the map as a user interface when the address is still private information. Because, the map is used to represent precise locations at some level you will always run into the issue of privacy.

The map is useful if the user gets to choose events they would like to attend based on location. So I question the usefulness of a map of events if users have to be invited to be given the location for the event. I would use a different UI to list the events and use the map once the user has been invited. You can filter the list to include only those that fit within a particular radius from the user's location. To preserve privacy you can use buckets instead of specifying the actual radius to the user, for example, nearby, a bit out of the way and far far away.

The options you gave for representing an area are all fine but keep in mind that they don't ensure privacy at the level of the area you choose to show, for example, neighbourhood or town.

  • 3
    Indeed, users get to apply to events in their area. That's how they get invited in the first place. I do provide a list of events, but i think it's important for them to visually see the general area of the event. – Eric Guan Jun 13 '17 at 1:04
  • 13
    @AndreDickson I like the bucket idea! To add to that, I think there's value in letting the user know generally what those terms mean. For example, "Nearby (within 10 mi [or 15 km])", "A bit out of the way (within 20 mi [or 30 km])", "Far, far away (more than 20 mi [or 30 km])". If you did this though, you'd have to prevent users from constantly updating their "home" address an unlimited number of times (or at least throttle it.. one update/24 hrs), otherwise it would be possible for a very dedicated individual to triangulate the precise address of an event to which he or she is not invited. – maxathousand Jun 13 '17 at 14:01
  • 1
    I think it would be more useful to specify ranges (as per @maxathousand ), since to someone who's used to driving, "nearby" might be within 25 miles, while to someone without a car, "nearby" is only 3-5 miles. Throttling home address changes is a good solution to thwart automated triangulation attempts, in conjunction with large-ish bucket sizes (10mi/15km). – Doktor J Jun 13 '17 at 15:45
  • 6
    I can't imagine that I could decide whether I wanted to (or even could) attend an event based on its crow-flies distance from me. 10 miles away from my home could mean the downtown of a major city, or a spot in the middle of a forest unreachable by road. And only in one direction is 10 miles close to my workplace. You'd be better off foregoing the map altogether and just listing the city or zip code. – stannius Jun 13 '17 at 16:40
  • 2
    @JonH the fact that Craigslist (or any other website) takes a particular approach to the OP's problem (assuming it is for the equivalent problem) should not be the basis for agreement or disagreement. You need to inform us of why they have taken this approach, and how this approach has performed relative to their goals and expectations. – Andre Dickson Jun 14 '17 at 19:39
94

If your mapping framework provides the feature, highlighting a "suburb" might be appropriate for your use case. Of course the actual size of what is considered a suburb varies widely from region to region.

This screenshot shows google maps highlighting the suburb of Tanunda, South Australia.

showing a suburb

  • 12
    This quite neatly deals with the problem of changes in accuracy needed (see @PlasmaHH's comment on the question. Suburbs / post code areas etc will be more tightly defined in built up areas (area of city or town) but cover a lot of ground in the country. – Baldrickk Jun 13 '17 at 9:48
  • 4
    @Baldrickk but that's good! If you want to set something in the middle of a desert you don't want "a shape with area of exactly city 5 blocks" to obfuscate it with, because it'll have one house in it. – transistor09 Jun 13 '17 at 17:55
  • 12
    This idea would be even better if it was explicitly based on zipcode, like @Baldrickk suggests. By putting an icon in the center of the zipcode, highlighting the whole area, and making it clear that it is somewhere within that, you get small areas in dense locations (like cities) where a mile either way can make a big difference, and large areas in sparse locations where a few extra miles is nothing. – Bobson Jun 14 '17 at 0:49
  • 1
    Well that was a trip - scrolling down through the answers to see the name of my (small, obscure) home town on a map... – Beejamin Jun 15 '17 at 10:43
  • @Bobson: Relying on zip-code density may be very country-dependent, whereas historically, almost every populated place developed in a way that ended up in different distinguishable sub-areas. (Of course, how to reliably retrieve those is a different question.) To provide a concrete problem for zip codes, for instance, I think that knowing something is located in a given zip code is not useful when that zip code spans several villages with very different reachability. – O. R. Mapper Jun 18 '17 at 20:10
15

Another option, not sure if you've considered this: Ask the person setting up the event for a nearby public landmark (library, shopping center, etc.). Then use that location. That saves you from needing a lot of local knowledge and should handle a pretty wide variety of population densities.

It also nicely handles things like rivers. Around here, for example, the Potomac river divides Maryland and Virginia. A location on the Virginia side can be 10 minutes away, but move it 1,000 feet across the river, and suddenly it's an hour drive away. Your users will know this and pick a landmark on the correct side of the river.

  • 1
    That's an excellent point. The same thing happens with Detroit and Windsor, Ontario. Google once returned a result for me of a 'nearby' restaurant that I would have needed a passport to visit! (I think they've gotten much better about this.) – David Conrad Jun 16 '17 at 6:24
14

Your idea sounds like a reasonable solution.

I would, however, ensure that this offset is not just randomly generated every time the map loads... With enough randomly-generated offsets, it would be possible to derive the actual center of this distribution.

Additionally, if you'd like to really emphasize that it's a general area, don't display a defined border to the circle, but rather just a blurred circular overlay that represents the general area. Something like the following, perhaps?

Note: It's just an illustration. The pattern is terrible, I know, and I agree--it was a preset option and I didn't bother adjusting it. I figured it was good enough for a mockup...

Map showing general area

  • 19
    Yeah, i'm thinking the position gets obfuscated once, and everyone sees the same false position. That way the real location can't be derived, if someone really really really wanted to do that haha. Thanks for the image, but to be honest that circle hurts my eyes. – Eric Guan Jun 13 '17 at 1:06
  • 1
    I like the circle, as a matter of fact I thought how cool when I saw it. Other than that, I don't know if this is possible, but can you delimit the are by neighborhood? Or maybe a 5x5 blocks grid, or half a mile or whatever? If so, instead of blurring, maybe you could colorize the area – Devin Jun 13 '17 at 1:20
  • 1
    @EricGuan yeah, I thought a pattern might be easier to derive the general shape from. I agree about the harshness of the pattern--I'd probably use wider stripes, but the tool I used had that thickness as a preset. Maybe with wider stripes, it wouldn't be so harsh. – maxathousand Jun 13 '17 at 1:53
  • 1
    I was thinking simply use the city as the scope and its boundaries. – Pysis Jun 13 '17 at 2:25
  • 1
    @Pysis That's certainly another option for OP to consider. I just know from personal experience living in one of the largest metroplexes in the United States (Dallas/Fort Worth area) that seeing that something is happening in "Dallas" might mean it's a 20 minute drive from me, or could be an hour and a half, depending on location, so a smaller scale would be more helpful to someone like me :) – maxathousand Jun 13 '17 at 13:51
8

Use the postal codes and corresponding area locations. It's an already implemented obfuscation/aggregation system adjusted for population density.

  • 1
    That would be a very boring and uneventful presentation of that information. Besides that it will make people google for the postal codes, to see how far that area is form their location. Nobody would use that app. – Big_Chair Jun 14 '17 at 11:01
  • 2
    @Big_Chair Nothing forbids you from showing them on the map widget. – tROMsø Jun 15 '17 at 4:35
  • 1
    @Big_Chair Nothing forbids you from also showing them on the map widget, optionally with colouring the relevant area/drawing a circle on the coordinates. Besides, people usually remember the postal code of their home area (and maybe workplace) and they'd certainly be mostly interested in local events. – tROMsø Jun 15 '17 at 4:41
  • 3
    Postal codes vary from country to country. Here in the UK a partial postal code such as OX16 identifies several thousand households in an area that varies depending on population density. I'd prefer derobert's answer, though. – nigel222 Jun 15 '17 at 13:16
  • To second @nigel222, in Germany, postal codes in large cities can identify parts of the city (as intended), but when it comes to smaller towns, a single postal code can identify several towns and villages (that have a joint administration, for instance), where some villages are considerably easier reachable than others, especially by public transportation. – O. R. Mapper Jun 18 '17 at 20:17
4

You obviously cannot just take your precise loction and cover it with a blurb of grey; it still pinpoints right to the destination.

What you can (easily) do, though, is pick the next city, point out that city, and then make it very clear from the UI that the location is not by chance the center of that city. Make your location maker so obviously in the geographic center of the city you picked so that nobody would get the idea that the location is actually in the inner city, and label it something like "located somewhere near CityX" or whatever good idea you come up with.

To locate a city, make a query where you ask for "between X and Y km/miles away from the actual location + at least Z residents". Z does not need to be huge, but should likely be something like 3000 or up, to rule out small countryside villages.

If you get no results (i.e., for a very quiet rural area), then you need to scale up; i.e., make it "somewhere in state X" or something like that.

The information content for the user is mediocre, and like other answers said you could just skip the map display completely, but this is a solution to your question which will make your stakeholders happy and is a snazzy feature unless your clients happen to live primarily in far off farm villages.

  • 3
    So you're proposing that the interface essentially says, "This event is in somewhere London." People are probably going to need more precise information because, even for people living in London, that basically says, "It'll take you something between five minutes and two hours to get to it." – David Richerby Jun 13 '17 at 18:01
  • Sure, @DavidRicherby. If in London, there are plenty of possible addresses around. So you can get away with saying which part of London it is in. Or even make it a bit more detailed like "it's about 1 km from Big Ben" or something like that (i.e., divide a big town further by shooting for known buildings and such). Obviously, we'd need to know more about his scope - it is a "London Party App" or something that works worldwide (in which case the effort to pick well-known sights for the whole world would be too much, probably, for what is in the end just a little gimmick). – AnoE Jun 13 '17 at 19:55
  • 1
    @AnoE: Another issue is "Make your location maker so obviously in the geographic center of the city you picked so that nobody would get the idea that the location is actually in the inner city" That can be tricky, there's a large number of cities in the world. – Mooing Duck Jun 13 '17 at 23:59
4

If you limit the zoom and use a fairly large blob rather than a pin marker, this has a natural feel of low precision. Here's a mockup: Map of Cardiff with a random location indicated

Only major roads are shown but you can still see which side of the city the event is; you can't navigate.

I know some mapping APIs allow custom markers; I believe some allow limited zoom, at least when used embedded. The location fed to the API should be of limited precision (i.e. rounded).

If all else fails, you can do just this but display an image. I know of one site that does this quite successfully to allow people to decide whether an event is in the right place for them -- it's a bit oldschool but it works

2

If you internally divide the world space into a grid (say, 1x1 mile squares), then events can be classified as being inside some single square and whenever you render the map, you could just randomly place the marker for that event anywhere within that square. That way, you're not giving any hint about center and you still get discrete markers so it'll be easy to tell relative density.

You could even assign colors to grid segments based on number of events, skipping the markers so it's more like a heatmap, or have a single marker on each populated square representing roughly how many are in that area. And if you wanted to calculate distance to events you could assume each event's position is the center of the square.

  • 6
    The problem with this approach would be the gorms who would go to the precisely marked obfuscated location they found on the public map and upsetting the clueless owner/resident at that location. – HorusKol Jun 13 '17 at 3:53
  • 1
    A good portion (by area, not population) of the US has a population density of under 1 person per square mile. In many rural areas, that will exactly identify the location. – derobert Jun 14 '17 at 20:25
  • 3
    And in many cities, a one mile range can include neighborhoods that span from "you don't want to be here after dark" to "multi-million dollar homes you can't afford". I'd want to know which area it is before I decide to go to the event. – Johnny Jun 15 '17 at 16:23
  • And outside a city a single square mile can be bisected by a river, meaning a fifty-mile drive from one bank to the other. – nigel222 Jun 20 '17 at 11:00
  • I've tried thinking of ways around these problems, like allowing manually redrawing of sections or using counties or districts as segmentation, but none would really solve them in a remotely feasible way. Dang real world complications. – Doug Kavendek Jun 21 '17 at 1:03
1

How about displaying an event's location as "2 miles north of you" or something like that? In some areas, neighborhoods are named, so you could say: "4 miles northwest in the Lake Highlands area." For something close enough to risk a potential giveaway, you could say: "Just down the road."

1

You could internally divide your map into predefined hexes with each hex being maybe 1 mile/2 km across. For any given event, its location will fall into exactly one hex. You could then show a circle on your map with no defined edge (either a shaded area with a faded edge, or just a shaded area with no outline) that encircles the hex -- the event will be guaranteed to be within that circle, but users will not be able to triangulate where an event occurs within that circle.

You could then count the user as being in their own hex, and provide the approximate distance based on hex-to-hex distance, e.g. "this event is about 5 miles away". This will provide a ±1mi/2km accuracy (if the user and event are on far corners of their respective hexes it'd be just under 6 miles, and if they're on the near corners it'd be just over 4 miles) but users (or bots) will still not be able to triangulate an event's location beyond the 1mi/2km hex.

If it's a really rural area where the location is literally the only place in a 1mi+ radius then yes, it could be deduced, but this is an extreme edge case.

The circles that the users see will effectively have overlap, but because the underlying "architecture" is based on non-overlapping hexes, you will never have a case where a particular location shows up in more than one circle.

1

Instead of showing the location of each event, show only the average-locations of groups of 2 or more events. Here's a quick mock-up:

event group mock-up

The pink dots are because I made this from a screenshot of flickr.com/map.  IIRC, Flickr used to have the UI I'm describing— images were lumped together into “aggregate dots” — but sadly that implementation of the map interface seems to be gone.

Your algorithm should never display a single “(1)” dot on the map— if there's only one event in a location, it should look further out until it finds another event and then average the locations together— e.g. in the rare edge case that a metro area has only 2 events on the opposite sides of the downtown area would show a “(2)” dot right in the middle of the downtown area.  The more events there are in an area, the more accurate the location effectively becomes, but there should be a hard limit to the accuracy too— events within a minimum distance (e.g. 1000 meters) are always grouped together, and so you end up with higher-numbered bubbles as seen above.

In terms of privacy, the lat/long accuracy is tied to the density of events… and high event densities are almost certainly only going to occur where there's also high population/venue densities.

The only edge-case I can think of in which an event's location could become unobfuscated is the situation that multiple in-app events are added for the same real-world event.  Doing a filter on your data before mapping it that removes duplicate addresses could be one way to solve this.

0

Use a fixed size grid for your map and chosse the grid size according to your need (e.g. 2mile squares). Then highlight the grid containing the event location.
Note that the grid shoud have a fixed start point.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.