mapbox / mapbox-gl-native

Interactive, thoroughly customizable maps in native Android, iOS, macOS, Node.js, and Qt applications, powered by vector tiles and OpenGL
https://mapbox.com/mobile
Other
4.36k stars 1.33k forks source link

Annotations don't maintain size during tilting #2186

Closed friedbunny closed 4 years ago

friedbunny commented 9 years ago

When the map is tilted, marker annotations are scaled with the rest of the map — markers closer to the horizon are small and difficult to interact with.

We should provide an option (default: on) for annotations to maintain their normal scale during tilting.

simulator screen shot aug 26 2015 4 47 13 pm

/cc @ansis @incanus @1ec5

incanus commented 9 years ago

This is especially jarring considering the wide range of sizes that can happen.

img_4133

ansis commented 9 years ago

Yeah, it's not just annotations. Road and poi labels become illegible near the top. Nothing works well when the map is tilted this steep. The roads become so narrow they disappear. Steep tilt is a completely different game. Many things (rendering, data loading, styling, labeling) need to be different. I think this will be a lot of work so I'm not sure how soon we'll have it.

We can also tweak the altitude parameter to make the maps less perspectivey. If altitude is higher than the map can be squished more in the y direction without making close things appear bigger.

What's the use case here? Why is the map in perspective mode and why do annotations need to be equally prominent in this case?

Does it matter that it's harder to interact? Can the user just pan the map forward to make things at the back bigger? (this will be easier with https://github.com/mapbox/mapbox-gl-native/issues/2139#issuecomment-135178162)

Does the hit detection need to be adjusted for perspective views?

mb12 commented 9 years ago

In Nokia maps, Google Maps and Apple maps, the user can drop a pin (annotation) anywhere on the map. The application then does an object query and shows whats at that point (address etc.). This user pin retains its original size/shape when the map is panned with perspective enabled (This may very well be an artifact of how pins/annotations are implemented in these applications and not an intentional feature).

incanus commented 9 years ago

What @mb12 said — all mobile toolkits maintain size for markers. This affects hit detection as well as popup/callout placement.

The use case is general tilt for interactive maps just like other frameworks. Once you've got tilt, users expect it to work the same way.

friedbunny commented 9 years ago

Aye, parity is the main reason — having the option to perspective-scale markers is cool, though.

incanus commented 9 years ago

Per voice, this sounds like a fairly heavy lift since it would "undoing" the sizing for certain symbols and not necessarily just not executing a current routine. It also has collision implications.

We can also play with the altitude to see how it affects the steepness of the angle.

friedbunny commented 8 years ago

The user location annotation's accuracy circle now has the opposite problem: it should maintain scale as the map is vertically panned, but it instead maintains a constant size... which means it's inaccurate everywhere on the tilted screen except in the center.

The user location annotation is a native UIView and will need a separate-but-related fix to our GL-implemented marker annotations.

1ec5 commented 8 years ago

5040 asks for the opposite behavior with respect to the user dot and other annotation views.

1ec5 commented 7 years ago

9009 will unblock this work at the mbgl level.

stale[bot] commented 5 years ago

This issue has been automatically detected as stale because it has not had recent activity and will be archived. Thank you for your contributions.

stale[bot] commented 5 years ago

This issue has been automatically detected as stale because it has not had recent activity and will be archived. Thank you for your contributions.

stale[bot] commented 4 years ago

This issue has been automatically detected as stale because it has not had recent activity and will be archived. Thank you for your contributions.