REAL-TIME COLLISION AVOIDANCE FOR MAP LABELS AND SYMBOLS

Abstract
A method of displaying a map on a wireless communications device includes obtaining map data for rendering the map to be displayed on the wireless communications device, the map data including label data for rendering labels on the map. The device generates a collision-avoidance array representative of the map to be rendered for testing potential label positions prior to actually rendering the labels on the map. The collision-avoidance array is populated by provisionally designating, for each successive label to be rendered, a label space in the collision-avoidance array that corresponds to a map space that is to be occupied by the label on the map. The device then determines whether each successive label to be rendered collides in the collision-avoidance array with any previously designated label spaces. If no collision exists for a given label, the label can be rendered on the map.
Description

BRIEF DESCRIPTION OF THE DRAWINGS

Further features and advantages of the present technology will become apparent from the following detailed description, taken in combination with the appended drawings, in which:



FIG. 1 is a block diagram schematically illustrating pertinent components of a wireless communications device and of a wireless communications network;



FIG. 2 is a more detailed block diagram of a wireless communications device;



FIG. 3A is a system diagram of network components which provide mapping functionality in the wireless communications devices of FIG. 1 and FIG. 2;



FIG. 3B illustrates a message exchange between a wireless communications device and a map server for downloading map content to the wireless communications device based on the system of FIG. 3A;



FIG. 3C is a diagram showing a preferred Maplet data structure;



FIG. 4 is a schematic depiction of a wireless network having an applications gateway for optimizing the downloading of map data from map servers to wireless communications devices;



FIG. 5 is a flowchart presenting steps of a method of determining label positions for labels on a map displayed on a wireless device;



FIG. 6A is a depiction of a map rendered on a display where two labels overlap as a result of a very simplistic algorithm that blindly positions labels at midpoints of their associated features;



FIG. 6B is a schematic depiction of a collision-avoidance array for testing provisionally designated position to ensure that no collision occurs with any previously designated map positions;



FIG. 6C is a schematic depiction of the collision-avoidance array of FIG. 6B, illustrating the checking of provisionally designated map positions for each successive map label of decreasing priority;



FIG. 7A is a depiction of a further collision that would occur if the map label “Access Road” were relocated to the right after an initial determination that the first provisionally designated map position collided with a previously designated map position;



FIG. 7B is a schematic depiction of the collision-avoidance array used to test the relocated map position of FIG. 7A;



FIG. 8A is a depiction of an acceptable map position for the “Access Road” after relocating the label to the left;



FIG. 8B is a schematic depiction of the collision-avoidance array used to test the map position of FIG. 8A;



FIG. 9A is a depiction of another implementation of the collision-avoidance array where map spaces are represented by a contiguous set of elements in the array;



FIG. 9B is a schematic depiction of the collision-avoidance array used to test the map position of FIG. 9A;



FIGS. 10-21 are successive screenshots of a street map of downtown Ottawa, Canada, showing how the map labels and symbols avoid each other (using the collision-avoidance array) and are dynamically repositioned as the user pans south and east; and



FIG. 22 is a screenshot of a regional map showing Ottawa, Canada and its surrounding municipalities, rivers and highways wherein text-on-path labels are dynamically repositioned to avoid other labels but wherein any label having a single, fixed location is simply not rendered if it collides with the label of a previously designated map position.


Claims
  • 1. A method of displaying a map on a wireless communications device, the method comprising steps of: obtaining map data for rendering the map to be displayed on the wireless communications device, the map data including label data for rendering labels on the map;generating a collision-avoidance array representative of the map to be rendered for testing potential label positions prior to actually rendering the labels on the map;populating the collision-avoidance array by provisionally designating, for each successive label to be rendered, a label space in the collision-avoidance array that corresponds to a map space that is to be occupied by the label on the map and by determining whether each successive label to be rendered collides in the collision-avoidance array with any previously designated label spaces; andrendering the labels on the map in the map spaces corresponding to the label spaces designated in the collision-avoidance array.
  • 2. The method as claimed in claim 1 wherein the step of populating the collision-avoidance array further comprises a step of prioritizing the labels such that the collision-avoidance array is populated by provisionally designating label spaces for labels of highest priority to lowest priority.
  • 3. The method as claimed in claim 1 wherein the step of generating the collision-avoidance array comprises defining the array such that each character of each label is represented by a single element of the array.
  • 4. The method as claimed in claim 2 wherein the step of generating the collision-avoidance array comprises defining the array such that each character of each label is represented by a single element of the array.
  • 5. The method as claimed in claim 1 wherein the step of generating the collision-avoidance array comprises defining the array such that each map space to be occupied by each label when rendered on the map is represented by a corresponding, contiguous set of elements in the array.
  • 6. The method as claimed in claim 2 wherein the step of generating the collision-avoidance array comprises defining the array such that each map space to be occupied by each label when rendered on the map is represented by a corresponding, contiguous set of elements in the array.
  • 7. The method as claimed in claim 1 wherein the step of populating the collision-avoidance array comprises steps of: for each successive label to be rendered, provisionally designating the label space in the collision-avoidance array such that a midpoint of the corresponding map space aligns with a midpoint of a map feature to which the label relates;determining whether the provisionally designated label space collides with any previously designated label spaces in the collision-avoidance array;if the provisionally designated label space does not collide with any previously designated label spaces in the collision-avoidance array, then definitively designating the label space for rendering the label at the corresponding map space on the map; andif the provisionally designated label space collides with any previously designated label spaces in the collision-avoidance array, then testing a new label space by repositioning the label space either beyond a collision point for cases where less than half of the label space fit before the collision point or before the collision point for cases where more than half of the label space fit before the collision point.
  • 8. The method as claimed in claim 2 wherein the step of populating the collision-avoidance array comprises steps of: for each successive label to be rendered, provisionally designating the label space in the collision-avoidance array such that a midpoint of the corresponding map space aligns with a midpoint of a map feature to which the label relates;determining whether the provisionally designated label space collides with any previously designated label spaces in the collision-avoidance array;if the provisionally designated label space does not collide with any previously designated label spaces in the collision-avoidance array, then definitively designating the label space for rendering the label at the corresponding map space on the map; andif the provisionally designated label space collides with any previously designated label spaces in the collision-avoidance array, then testing a new label space by repositioning the label space either beyond a collision point for cases where less than half of the label space fit before the collision point or before the collision point for cases where more than half of the label space fit before the collision point.
  • 9. A computer program product comprising code adapted to perform the steps of claim 1 when the computer program product is loaded into memory and executed on a processor of a wireless communications device.
  • 10. A computer program product comprising code adapted to perform the steps of claim 2 when the computer program product is loaded into memory and executed on a processor of a wireless communications device.
  • 11. A computer program product comprising code adapted to perform the steps of claim 3 when the computer program product is loaded into memory and executed on a processor of a wireless communications device.
  • 12. A computer program product comprising code adapted to perform the steps of claim 4 when the computer program product is loaded into memory and executed on a processor of a wireless communications device.
  • 13. A computer program product comprising code adapted to perform the steps of claim 5 when the computer program product is loaded into memory and executed on a processor of a wireless communications device.
  • 14. A computer program product comprising code adapted to perform the steps of claim 6 when the computer program product is loaded into memory and executed on a processor of a wireless communications device.
  • 15. A computer program product comprising code adapted to perform the steps of claim 7 when the computer program product is loaded into memory and executed on a processor of a wireless communications device.
  • 16. A computer program product comprising code adapted to perform the steps of claim 8 when the computer program product is loaded into memory and executed on a processor of a wireless communications device.
  • 17. A wireless communications device for enabling a user of the device to display a map on the device, the wireless device comprising: an input device for enabling the user to cause the device to obtain map data for rendering the map to be displayed on a display of the device, the map data including label data for rendering labels on the map for identifying one or more map features; anda memory for storing code to instruct a processor to: generate a collision-avoidance array representative of the map to be rendered for testing potential label positions prior to actually rendering the labels on the map;populate the collision-avoidance array by provisionally designating, for each successive label to be rendered, a label space in the collision-avoidance array that corresponds to a map space that is to be occupied by the label on the map and by determining whether each successive label to be rendered collides in the collision-avoidance array with any previously designated label spaces; andrender the labels on the map in the map spaces corresponding to the label spaces designated in the collision-avoidance array.
  • 18. The wireless communications device as claimed in claim 17 wherein the processor populates the collision-avoidance array by prioritizing the labels such that the collision-avoidance array is populated by provisionally designating label spaces for labels of highest priority to lowest priority.
  • 19. The wireless communications device as claimed in claim 17 wherein the processor generates the collision-avoidance array by defining the array such that each character of each label is represented by a single element of the array.
  • 20. The wireless communications device as claimed in claim 18 wherein the processor generates the collision-avoidance array by defining the array such that each character of each label is represented by a single element of the array.
  • 21. The wireless communications device as claimed in claim 17 wherein the processor generates the collision-avoidance array by defining the array such that each map space to be occupied by each label when rendered on the map is represented by a corresponding, contiguous set of elements in the array.
  • 22. The wireless communications device as claimed in claim 18 wherein the processor generates the collision-avoidance array by defining the array such that each map space to be occupied by each label when rendered on the map is represented by a corresponding, contiguous set of elements in the array.
  • 23. The wireless communications device as claimed in claim 17 wherein the processor populates the collision-avoidance array by: for each successive label to be rendered, provisionally designating the label space in the collision-avoidance array such that a midpoint of the corresponding map space aligns with a midpoint of a map feature to which the label relates;determining whether the provisionally designated label space collides with any previously designated label spaces in the collision-avoidance array;if the provisionally designated label space does not collide with any previously designated label spaces in the collision-avoidance array, then definitively designating the label space for rendering the label at the corresponding map space on the map; andif the provisionally designated label space collides with any previously designated label spaces in the collision-avoidance array, then testing a new label space by repositioning the label space either beyond a collision point for cases where less than half of the label space fit before the collision point or before the collision point for cases where more than half of the label space fit before the collision point.
  • 24. The wireless communications device as claimed in claim 18 wherein the processor populates the collision-avoidance array by: for each successive label to be rendered, provisionally designating the label space in the collision-avoidance array such that a midpoint of the corresponding map space aligns with a midpoint of a map feature to which the label relates;determining whether the provisionally designated label space collides with any previously designated label spaces in the collision-avoidance array;if the provisionally designated label space does not collide with any previously designated label spaces in the collision-avoidance array, then definitively designating the label space for rendering the label at the corresponding map space on the map; andif the provisionally designated label space collides with any previously designated label spaces in the collision-avoidance array, then testing a new label space by repositioning the label space either beyond a collision point for cases where less than half of the label space fit before the collision point or before the collision point for cases where more than half of the label space fit before the collision point.
Provisional Applications (2)
Number Date Country
60788434 Mar 2006 US
60787541 Mar 2006 US