`
`11111111111111011111101011111911,110111Fgllili1,11111111110101111011110111111
`
`(19) United States
`(12) Patent Application Publication (10) Pub. No.: US 2006/0116817 Al
`Jun. 1, 2006
`Salmre et al.
`(43) Pub. Date:
`
`(54) LOCATION AWARE MOBILE-DEVICE
`SOFTWARE DEVELOPMENT
`
`(52) U.S. Cl.
`
` 701/211; 340/995.1; 340/995.14;
`701/208
`
`(75)
`
`Inventors: Ivo W. Salmre, Aachen (DE); Frank
`Mantek, Wermelskirchen (DE)
`
`Correspondence Address:
`MERCHANT & GOULD (MICROSOFT)
`P.O. BOX 2903
`MINNEAPOLIS, MN 55402-0903 (US)
`
`(73) Assignee: Microsoft Corporation, Redmond, WA
`
`(21) Appl. No.:
`
`10/998,081
`
`(22) Filed:
`
`Nov. 26, 2004
`
`Publication Classification
`
`(51) Int. Cl.
`GO1C 21/30
`
`(2006.01)
`
`(57)
`
`ABSTRACT
`
`A development environment makes it easier to develop and
`use location aware software applications. Combining the
`currently separate and complex tasks of location information
`gathering, analysis, and display and making them integrated
`such that non-experts can build location services into their
`applications increases a developer's capability to write rich
`location-aware software applications. A higher level pro-
`gramming model allows a programmer to use location
`information as a logical entity rather than just raw location
`data, such as latitude and longitude. A location data store and
`map data store may be accessed by different location aware
`applications on the device. Instead of each location appli-
`cation relying on its own data store, applications may share
`their location related information.
`
`3251
`
`S
`
`Location
`Source 1
`
`3252
`
`S
`
`Location
`Source 2
`
`325N
`
`S
`
`Location
`Source N
`
`f 300
`
`Location Manager
`
`320
`
`Location Aware Application
`
`330
`
`Map Manager
`
`340
`
`Stored Maps
`1,2,3...
`
`Map
`Generators
`
`Map Web
`Services
`
`342
`
`344
`
`346
`
`Exhibit 1006
`Page 01 of 16
`
`
`
`Patent Application Publication Jun. 1, 2006 Sheet 1 of 8
`
`US 2006/0116817 Al
`
`( -108
`
`(
`
`-100
`
`COMPUTING DEVICE
`
`104
`
`( 102
`
`105
`
`PROCESSING UNIT
`
`SYSTEM MEMORY
`
`ROM/RAM
`OPERATING
`SYSTEM
`
`APPLICATIONS
`
`LOCATION
`AWARE
`PROGRAMMING
`INTERFACE
`
`106
`
`, - ,
`
`120
`
`PROGRAM
`DATA
`
`,
`
`107
`
`REMOVABLE
`STORAGE
`
`NON-REMOVABLE
`STORAGE
`
`INPUT DEVICE(S)
`
`OUTPUT DEVICE(S)
`
`COMMUNICATION
`CONNECTION(S)
`
`109
`
`Th
`110
`
`112
`
`114
`
`116
`
`118
`
`OTHER
`COMPUTING
`DEVICES
`
`Fig. 1
`
`Exhibit 1006
`Page 02 of 16
`
`
`
`Patent Application Publication Jun. 1, 2006 Sheet 2 of 8
`
`US 2006/0116817 Al
`
`200
`
`260
`
`c
`
`\
`
`PROCESSOR
`
`lit
`
`228 N
`
`DISPLAY
`
`232
`
`-\,
`
`KEYPAD
`
`274
`
`AUDIO
`INTERFACE
`
`j
`
` ,--- 262
`
`MEMORY
`y— 264
`
`
`C OS
`
`Location
`..
`APP(S)
`C
`7- LOCATION './-
`STORE
`
`--,,,---
`c r
`MAP STORE
`
`POWER
`SUPPLY
`
`266
`
`268
`
`269
`
`270
`
`240
`
`1
`
` .i
`
`COMMUNICATION
`CONNECTION(S)
`
`LED
`
`i
`
`272
`
`Fig.2
`
`Exhibit 1006
`Page 03 of 16
`
`
`
`Patent Application Publication Jun. 1, 2006 Sheet 3 of 8
`
`US 2006/0116817 Al
`
`3251
`
`3252
`
`Location
`Source 1
`
`Location
`Source 2
`
`325N
`
`S
`
`Location
`Source N
`
`1 — 300
`
`Location Manager
`
`320
`
`Location Aware Application
`
`330
`
`Map Manager
`
`P\ 340
`J
`
`Stored Maps
`1,2,3...
`
`Map
`Generators
`
`Map Web
`Services
`
`342
`
`344
`
`346
`
`Fig. 3
`
`Exhibit 1006
`Page 04 of 16
`
`
`
`Patent Application Publication Jun. 1, 2006 Sheet 4 of 8
`
`US 2006/0116817 Al
`
`4i— 400
`
`420
`'NJ
`
`Selection of Maps
`and Map Servers
`
`•-\)410
`Designation of
` w Geographical Areas
`of Interest
`
`430
`
`Development o
`Event Based
`Location Driven
`Code
`
`4 1*
`
`t
`
`450
`
`Testing with Real
`and Simulated
`Location Sources
`
`k
`
`4
`Iterative
`Development
`
`4i
`Development of
`Event Based Map
`Rendering Code
`
`440
`
`Fig. 4
`
`Exhibit 1006
`Page 05 of 16
`
`
`
`Patent Application Publication Jun. 1, 2006 Sheet 5 of 8
`
`US 2006/0116817 Al
`
`f 500
`
`Area of interest #2
`
`;
`
`.r....,.-5,:,..
`
``.
`..-1!,'?I'''''
`017. -
`
`0
`
`,
`
`e:q1 . 71.,
`''-'.
`
`,.„
`.--' ral. a
`,_1.:
`.1,-
`'.
`.... ca
`
`..
`
`r.. .1
`
`ez V‘fe ,-;',1-
`
`Meiatener a
`'''''.1%ri,-.
`
`C.4111'cis .:1', We
`
`...,,,..'-'
`..t.
`4-^.
`.c._
`
`. -
`
`• ,,,,Jc-_6
`-••.:
`.
`[,.,.. Wei ..•..:eri`oo
`).'A°'
`
`,_s,P
`
`, pa2 i:.
`
`7
`•:,..,
`r:.:., ,.
`47
`
`--,
`
`s 42?
`
`c-•:.
`-1.
`
`2.
`;t,
`.x.
`
`,.-cs'F'
`
`
`
`y „.. -
`
`Fig. 5
`
`....;),
`4..,
`
`,
`L 'Un'Wh l
`. ^ha FF. 5.:t r all e
`
`taNIX.
`..
`.1.1
`,:c•
`7.7.
`
`:7,
`a:
`
`Area of interest #1
`
`Exhibit 1006
`Page 06 of 16
`
`
`
`Patent Application Publication Jun. 1, 2006 Sheet 6 of 8
`
`US 2006/0116817 Al
`
`600
`
`Map 1:
`
`Lat: 50.852
`Long: 5.8913
`
`Map 2:
`
`4.
`140P1)1011.01-1:41,S MAW!
`.
``, , - EVotlenix,i,1
`,,,,,1_,,,,,,,,,,,,"
`
`---
`
`Lat 50.795
`Long: 6.0433
`
`Wildbath
`
`Eys
`
`..,Celn
`
`.. ,
`
`tosiold
`
`k •
`
`Aacher?
`
`:
`
`- •Kol,1•:,:hed
`E,,,V,iNveclon „a.4,--
`5:..7.1,:oz
`o -..'.-
`Wth %e'en —
`0 .
`Limahh,G
`,..,. :/
`0
`...,,,j-7/;- i''-'-f„ ,....'„,,,, ,,,,,
`? .1 ,,,,,* •,,A,,, , '; ' :01 5 k:K.' ' h's.,,Ttl.'.„...4: 1T2::::17n-ctz:r-a714., -
`\leo.
`',truer 5 Seffenl-
`- ,
`• 1", ',--'' H.";r ic
`"
`L...; .,2
`„
`o_....(..);
`Iht,,, ,,
`,S:utb::...sg.
`n
`....
`,-
`vaats.-.:: :,!,
`rt.the Fr cp: ,.
`-
`-
`0,030,1,1 r,,,,,,cp
`
`.Z.
`
`•
`
`Vex:pack
`
`VAmptitvbel
`
`. A Aachen
`
`Lat: 50.769
`Long: 6.0957
`
`Pl t•ArT.
`
`-. - --.
`.2.11 real
`— •
`Hdr171111C.,
`• • .1 L. C5...6ite
`WA1.1.0011 kl:C10111,,jf,
`her,treolii
`
`ti,LL '.1
`
`vitml
`14, atAttAtigt,p
`
`1011,31,1o,t,m,.1L,1
`'1744;114 Lat: 50.703
`Long: 6.242,
`
`4+
`
`Map 3:
`Lat: 50.783
`Long: 6.0679
`
`Vbeztt,h,l,t
`
`Aa
`
`c
`
`h
`
`e
`
`n
`
`,7kt a1e
`
`fleS1
`TiC I n
`
`Lat: 50.779
`Long: 6.0766
`
`Map 4:
`Lat: 50.829
`Long: 6.0629
`
`Clodpe,q
`
`SLYdtlbach
`
`oVViirselen
`
`,DL;
`
`
`
`-3L.2"
`
`,c
`
`thou
`
`•
`
`d7.,1,11c
`
`CI
`
`AiCherl
`0 0
`IT2.;:7•17,1
`
`Pctrk' e Lat: 50.771
`61z-i Long: 6.1807
`
`°
`
`Fig. 6
`
`Exhibit 1006
`Page 07 of 16
`
`
`
`Patent Application Publication Jun. 1, 2006 Sheet 7 of 8
`
`US 2006/0116817 Al
`
`700
`
`d1:1141.14NrrIZTITSFIN,
`14 API
`20. 6/1/2004 6:1315 PM:Lat sa 7703235034454 degrees. Long 6.088287746269138 domes, Uncertainty. 0 met=
`18 64/20134 61312 PM:Lat 50.7715%4353178 degrees. Long 6.0889Paill18sell4 dogma. Uncertaity. 0 meters
`18. 6/1/2004 6:1309 PM:Lat 50.7726752278846 degas. Long 6081359617957301 &pm Uncertainly. 0 olden
`17. 6/1/2004 6:1a06 PKE sited are. Aachen Rely Cates
`16. 6/1/21304 6:1306 PM:Lat 50 7/S329198923 ciscoca. Long 6.0882173130%94 decocts, Uncertainty 0 mews
`15 671/2004 6:1303 Mitt 50.7744635710858 dconses, Lora: 608779645430247 degrees, Uncertainly 0 melon
`ME:=1:MIKESS=1=
`knulato Enabled
`Disconnect Simulatoi
`Simulated spume has been hooked uo to the emulator.
`
`Bq Picture:
`
`Snspl Piaule
`
`4'1/44,
`/
`
`,
`
`,
`
`\o„
`
`Snat
`stem s•
`
`'
`• '
`
`WIngertsherg
`
`.4 .
`
`tsattpne
`
`rA
`
`esti.
`
`rhsthule
`.„,skernkag
`
`am
`Teconische
`HoCheChulz
`
`Aachen
`
`ignm
`
`.-•e°
`
`%,70
`
`t
`a
`
`txpuk
`
`pork
`
`reqe
`
`O
`
`sse
`
`e
`
`I
`
`IP
`
`be
`V 1-
`
`.7.44
`py
`y
`
`.../
`
`..,9
`
`Ositriedhof
`
`,-...e°
`
`661/1
`
`7 .
`
`.
`
`,LoisenstraBe
`
`3
`
`P
`2o vam,14
`
`a ,,,,,4,04a7
`
`e —
`
`7.
`
`Fig. 7
`
`Exhibit 1006
`Page 08 of 16
`
`
`
`Patent Application Publication Jun. 1, 2006 Sheet 8 of 8
`
`US 2006/0116817 Al
`
`SERVER
`
`812 -..-7—''
`
`LOCATION STORE
`
`810,f -N,
`
`813 -____/
`
`MAP STORE
`
`f 800
`
`GATEWAY
`
`860
`
`WIDE AREA
`NETWORK/LOCAL
`AREA NETWORK
`
`CELLULAR/ PAGER
`NETWORK
`
`840
`
`850
`
`COMPUTING
`DEVICE
`
`LOCATION
`AWARE
`PROGRAMMING
`ENVIRONMENT
`
`830 832
`
`Location
`8211 ___/`
`Source 1
`
`-1F---.16.
`
`8212 ..._
`
`821N J
`
`Location
`Source 2
`
`Location
`Source N
`
`Fig. 8
`
`.r,
`
`MOBILE DEVICE
`LOCATION
`STORE
`
`\:" 824
`
`MAP STORE \J 825
`
`LOCATION
`APP
`
`820 822
`
`Exhibit 1006
`Page 09 of 16
`
`
`
`US 2006/0116817 Al
`
`Jun. 1, 2006
`
`1
`
`LOCATION AWARE MOBILE-DEVICE SOFTWARE
`DEVELOPMENT
`
`BACKGROUND OF THE INVENTION
`
`In the past several years more and more applica-
`[0001]
`tions utilizing location information have been developed.
`Some of these location applications include map programs,
`flight-tracker programs, and navigation programs. Many of
`these applications are being developed for mobile comput-
`ing devices. For example, in-car navigation systems have
`been developed to help users navigate through a city. Some
`cellular phones also include GPS based navigation pro-
`grams. It is very difficult, however, to develop these appli-
`cations. Positioning systems typically only provide location
`data, such as latitude and longitude, and require the appli-
`cation to process and interpret the information.
`
`SUMMARY OF THE INVENTION
`
`[0002] Embodiments of the present invention are related
`to a system and method for making it easier to develop and
`use location aware software applications. Combining the
`currently separate and complex tasks of location information
`gathering, analysis, and display and making them integrated
`such that non-experts can build location and mapping ser-
`vices into their applications increases a developer's capa-
`bility to write rich location-aware software applications.
`
`[0003] According to one aspect, an application program-
`ming interface for building location aware applications is
`used. This higher level programming model is directed
`towards allowing a programmer to use location information
`as a logical entity rather than just raw location data, such as
`latitude and
`longitude. The
`location
`information
`is
`abstracted into areas of interest. The developer also does not
`need to concern themselves with building their own map
`rendering software and may use rendering engines devel-
`oped by third parties.
`
`[0004] According to another aspect of the invention, an
`event driven programming model is used in building the
`location aware applications. Events may be generated in
`response to the location of an item relative to an area of
`interest. For example, a programmer designates one routine
`to be executed when a device enters a first area of interest,
`and another routine to be executed when a device leaves a
`second area of interest.
`
`[0005] According to yet another aspect of the invention, a
`location data store may be accessed by different location
`aware applications. Instead of each location application
`relying on its own data store, applications may share their
`location related information.
`
`[0006] According to yet another aspect of the invention,
`shared maps may be accessed by different location aware
`applications. Instead of each location application relying on
`its own map store and map rending technology, applications
`may work with a shared repository of maps data and map
`rendering engines.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0007] FIGS. 1 and 2 illustrate an exemplary computing
`devices that may be used in exemplary embodiments of the
`present invention;
`
`[0008] FIG. 3 illustrates a location aware system;
`
`[0009] FIG. 4 shows a state diagram of interaction for
`development of location aware applications;
`
`[0010] FIG. 5 shows defining exemplary areas of interest;
`
`[0011] FIG. 6 illustrates exemplary maps that may be used
`by a location aware application;
`
`[0012] FIG. 7 illustrates an exemplary simulation screen-
`shot for a location aware application; and
`
`[0013] FIG. 8 is a functional block diagram generally
`illustrating an location aware development system in accor-
`dance with aspects of the invention.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENT
`
`[0014] Generally, the present invention is directed at pro-
`viding a method and system for making it easier to develop
`and use location aware software applications. Combining
`the currently separate and complex tasks of location infor-
`mation gathering, analysis, and display and making them
`integrated such that non-experts can build location services
`into their applications increases a developer's capability to
`write rich location-aware software applications
`
`Illustrative Location Aware Development System
`
`[0015] FIG. 3 illustrates a location aware system, in
`accordance with aspects of the invention. Location system
`300 includes location manager 320, location aware applica-
`tion 330, and map manager 340. Location manager is
`coupled to location sources 325(1-N). Map manager is
`coupled to map store(s) 342, map generator(s) 344, and map
`web service(s) 346.
`
`[0016] Location manager 320 is configured to receive
`location information from on or off device location sources
`(325(1-N)) and abstract the location information into loca-
`tion events that are provided to location aware application
`330. The location sources may be anything that provides
`location information about an item. For example, one loca-
`tion source may be a GPS receiver. Another location source
`may be a user input that indicates the position of an item. For
`example, a user may indicate through a user input on a
`device that they are at a certain location. The user may enter
`a location into their device using a keypad, touch screen,
`voice recognition, and the like. Other location sources may
`be simulated location sources. Instead of a developer having
`to be in the field to test application 330, they may use
`simulated location data. Another location source may be an
`RFID tag. Each location source may provide different reso-
`lutions of location data. For example, some location sources
`may be very accurate while other location sources may only
`be accurate to within a neighborhood, on a road, and the like.
`
`[0017] A location source can correspond to a proximate or
`distant location source. A proximate source corresponds to
`location generating hardware, including, but not limited to a
`GPS receiver or to the mobile device itself which is getting
`its location from network information. A distant location
`source corresponds to location information either pushed or
`pulled from a remote networked source (e.g. such as a
`pushed SMS message arriving with the location of my
`friend's car, or location information returned (pulled) via a
`web-request). Both the proximate and distant location
`
`Exhibit 1006
`Page 10 of 16
`
`
`
`US 2006/0116817 Al
`
`Jun. 1, 2006
`
`2
`
`sources are treated as abstract logical entities. This makes
`the programming model similar for many different kinds of
`location information.
`
`[0018] Once the location data is received, location man-
`ager 320 determines if any location event is triggered that
`relates to application 330. Instead of only being able to
`provide raw location data from the location sources to
`application 330, location manager 320 provides location
`events upon the occurrence of an item having some logical
`relationship with an area of interest, such as entering or
`leaving an area of interest.
`
`[0019] Generally, an area of interest provides an abstrac-
`tion of the location data (See FIG. 5 and related discussion).
`An area if interest can relate to any area and can be indoors
`or outdoors. For example, an indoor location could be used
`to show the location of a fixed asset (e.g. conference room)
`and/or moveable asset (e.g. people, office equipment, inven-
`tory).
`
`[0020] An outdoor area of interest could be a city block,
`an area around a building or some other landmark, or some
`other predefined area. An outdoor area of interest may also
`be a movable asset (e.g. a car or a person).
`
`Instead of an application having to interpret the raw
`[0021]
`location data, application 330 registers for location events
`based on the relation of the item to areas of interest. Upon
`the occurrence of the predefined location event, location
`manager 320 notifies application 330. At that point, appli-
`cation 330 executes an event driven code routine that was
`developed to handle the location event.
`
`[0022] Location aware application 340 responds to the
`generated location events. Upon the occurrence of a location
`event, location aware application 330 supplies a set of
`weighted criteria to MapManager 340. For example, the
`weighted criteria may include a suggested map resolution
`along with a set of objects that the applications would like
`displayed on the map they draw. The application may also
`supply objects that they want rendered on top of the existing
`map. In addition to the application responding to event
`driven rendering of maps, the application can also be self
`driven. For example, an application may have a timer that
`periodically "pulls" information and renders a new map. So
`in addition to "push" event-driven responses, the application
`can also "pull" data and take action.
`
`[0023] Map manager 340 abstracts the map information
`from the application such that it does not need to know
`details regarding how to handle maps or location informa-
`tion. Instead of the application having to include complex
`map rendering code, the application provides map manager
`340 with the name or type of map it would like displayed.
`Map generators 344 are not tied to any single application, or
`rendering engine. For example, one rendering engine may be
`vector based, whereas another rendering engine may be
`bitmap based. Location aware application 330 is provided
`with an interface to interact with map generator 344.
`
`[0024] Map Manager 340 provides a rich set of features to
`location aware application without application 330 having to
`know the details of how to implement the map code. For
`example, suppose application 330 wants to allow a user to
`point to an area on a map and then have that data translated
`to a latitude and longitude, or in the case of an indoor map
`into indoor coordinate systems. Map manager 340 provides
`
`that information to application 330. MapManager 340 acts
`as the broker between application 330 and the map-render-
`ing technologies and supplies functionality to the applica-
`tion. Some of the functionality includes mapping X/Y screen
`coordinates on the device to Lat/Long/Altitude map coor-
`dinates on the map. For example, a user may click on the
`screen that is currently displaying a map to input their
`location. In response to the user input, map manager maps
`the X/Y screen location to the Lat/Long/Altitude map loca-
`tion. Similarly, map manager 340 maps Lat/Long/Altitude
`map data to X/Y screen locations allowing the application to
`dynamically render on top of the currently displayed map.
`The altitude on some map renderings, such as a ski-area
`map, may significantly affect the X/Y location. There are
`many ways of converting an X/Y coordinate into a Lat/
`Long/Altitude coordinate. Generally, map manager receives
`the X/Y screen coordinate, matches the coordinate to the
`map, and then, based on the scale of the map, its projection
`technology and map boundaries provides the Lat/Long/
`Altitude coordinate. The application does not need to under-
`stand how the maps themselves are being rendered or what
`"projection technology" is being used. Many different map
`projection technologies are possible, including, but not
`limited to, classical map-projection techniques such as Mer-
`cator projections, Cylindrical projections, Polar projections,
`Grid projections and custom projection technologies (e.g. a
`ski-area map, a stadium seating map, etc). The application
`may seamlessly move between different projection tech-
`niques.
`
`[0025] MapManager 340 also supplies high level events
`about the set of available maps to application 330. These
`events provide the application important information such as
`when there are several maps available that meet the criteria
`requested by the application. Application 330 is not confined
`to using a single map for display. For example, one appli-
`cation may use a street map for one period of time and then
`use a metro map (e.g. showing bus routes, subway tunnels,
`etc.) during another time. Map manager 340 ranks the maps
`according to their order of suitability. When there are no
`maps available that meet the criteria provided by application
`330, but map manager 340 may locate maps that meet some
`of the criteria, then those maps may be provided.
`
`[0026] MapManager 340 also allows for the dynamic
`provisioning of new maps onto the device. The maps may be
`downloaded to the device at any time. For example, a new
`map may be downloaded for a public transportation appli-
`cation when a new transit route is added. According to one
`embodiment, these maps are represented using two files, one
`binary and opaque to MapManager and one that it under-
`stands. According to one embodiment, the map is repre-
`sented using an XML file. The map manager is able to read
`the XML file and obtain the information necessary to add the
`map to the on-device local map data store. Maps may also
`be added to the map store by the developer or through other
`sources.
`
`[0027] The following is an exemplary XML representa-
`tion.
`
`—<MapData Version="1.01"
`MapProjection="SimpleGrid"
`
`Exhibit 1006
`Page 11 of 16
`
`
`
`US 2006/0116817 Al
`
`Jun. 1, 2006
`
`3
`
`-continued
`
`MetersPerPixel="2.80253449893166"
`MapInfoClass="none" CustomMapRenderer="none">
`—<SimpleLatLongRectangle
`MapFileName="device map 1 0.PNG">
`<MapCoordinate Position="NorthWestComer"
`Latitude="50.7867" Longitude="6.07814549019608" I>
`<MapCoordinate Position="NortEastComer"
`Latitude="50.7867" Longitude="6.09407106666667" I>
`<MapCoordinate Position="SouthWestComer"
`Latitude="50.7766295454545"
`Longitude="6.07814726827094" I>
`<MapCoordinate Position="SouthEastCorner"
`Latitude="50.7766295454545"
`Longitude="6.09406985757576" I>
`</SimpleLatLongRectangle>
`</MapData>
`
`[0028] MapProjection refers to the technology that is used
`to display the map. In this particular example, the map
`projection type is a simple grid. MetersPerPixel refers to the
`average resolution of the map. MapInfoClass refers to
`whether there is a custom class that is needed to answer
`questions about this map. This field allows a developer to
`include a custom class within the programming environment
`that may be called when this map is displayed. Similarly,
`CustomMapRenderer refers to whether a custom rendering
`engine is needed to draw the map. The MapFileName field
`refers to the binary file name that contains information that
`the map-renderering engine that will be used to draw the
`map. The SimpleLatLongRectangle field identifies the map
`as a rectangle defined by latitude and longitude coordinates.
`
`[0029] The following example illustrates some of the
`custom fields being utilized.
`
`—<MapData Version="1.01" MapProjec on="S mpleGrid"
`MetersPerPixel="2.80253449893166"
`MapInfoClass="CustomMapInfol"
`CustomMapRender="CustomMapRenderr>
`<CustomMapInfol MapFileName="device_map 1 0.PNG"
`dassId="CustomMapEngine.MapInfoParser" />
`<CustmMapRenderl MapFileName="device_map 1 0.PNG"
`classId="CustomMapEngine.MapRenderEngine" />
`</MapData>
`
`[0030] MapManager 340 may have multiple maps avail-
`able on the device in a map store (342) that may be used by
`application 330. Map manager 340 searches though the set
`of maps available on the device in map store 342 and looks
`for the best map to be used. After being selected, the best fit
`map is selected and rendered.
`
`[0031] FIG. 4 shows a state diagram of interaction for
`development of location aware applications, in accordance
`with aspects of the invention.
`
`defined based on the needs of the location aware application.
`For example, suppose the location aware application being
`developed determines when a child leaves their school and
`returns home. In this particular example, areas of interest
`may be an area including the school and another area of
`interest including the child's home. Some areas of interest
`may be selected by the developer, while other areas of
`interest may be selected by a user. For example, many
`applications, such as the example described above, are
`configured after the application is provided to the user. In the
`above example, a parent may select the areas of interest.
`
`[0033] State 420 shows the selection of maps and map
`servers. A developer may select between the maps available
`in the system or may create their own maps. According to
`one embodiment of the invention, the available maps are
`shared across location applications such that different loca-
`tion aware applications may use the same map. In this way,
`each location aware application does not need to develop
`their own maps. In most instances, the specifics of the map
`rendering is hidden from the developer of the location aware
`application. Should the developer desire to include their own
`rendering software they may incorporate their rendering
`software into the environment at state 440.
`
`[0034] At state 440, the developer may also set up their
`preference for the rendering. For example, the developer
`may want to use a vector based rendering engine for one part
`of the application and a bitmap based system for another part
`of the application. The map engines may be provided by
`many different sources. Any developer who wants to build
`an engine may supply a map engine that conforms to the
`programming interface. Each map engine is plugged into the
`development system.
`
`[0035] At state 430, the developer programs the event
`based location code that is executed in response to events
`associated with the areas of interest within their application.
`This event based code is dependent upon the type of location
`aware application being developed and may include many
`different types of data. For example, a program may perform
`an action when a user reaches a predetermined location. In
`the tracking the child example above, an example routine
`may be programmed to highlight the home or school based
`on the location of the child at that particular time. The
`developer may also place items onto the map in response to
`the events.
`
`[0036] At state 450, the location aware application may be
`tested using real and/or simulated location sources. The
`system provides a simulator of a location source such that an
`application may be tested before it is put to us in the field.
`Using a simulated data source allows a developers event
`based location code to be tested upon the occurrence of a
`location event. Another use of a simulated location-source
`data is to "play back" previously recorded real-world loca-
`tion data. This is useful for application development, testing
`and debugging.
`
`[0032] Starting at state 410, geographical areas of interest
`are defined. The selection of the areas of interest may occur
`before or after the location aware application is deployed.
`Additionally, this information may be sent out to the devices
`at any time. An area of interest is a predefined region that
`relates to a map. The area of interest may be any size that is
`definable. For example, an area of interest may be the size
`a square meter or an entire country. The areas of interest are
`
`[0037] FIG. 5 shows defining exemplary areas of interest,
`in accordance with aspects of the invention. As illustrated in
`FIG. 5, two areas of interest have been defined. Area of
`interest #1 is defined by an oval boundary area and area of
`interest #2 is defined by a rectangular border. Although the
`areas of interest have been defined using predetermined
`geometric shapes, the areas of interest may be more defined
`in any way that defines the area. For example, the area of
`
`Exhibit 1006
`Page 12 of 16
`
`
`
`US 2006/0116817 Al
`
`Jun. 1, 2006
`
`4
`
`interest could be defined as a neighborhood, a county, an
`area between certain roads, and the like. According to one
`embodiment of the invention, the developer uses a set of
`predefined shapes to designate the areas of interest. The user
`may also select a point on the map and then provide a radius
`to extend from that point to be the area of interest. The area
`of interest may also be set using latitude and longitude
`coordinates.
`[0038] While the map illustrated in FIG. 5 shows a city
`map including streets, the map may be any type of map. For
`example, the map could be a ski map, a map of a forest, a
`park, a golf course, building floor plans, stadium seating
`maps and the like. As discussed above, when and area of
`interest is designated an event may be triggered based on
`something entering or leaving the area.
`[0039] While not illustrated, an area of interest may be a
`certain type of location. For example, a location aware
`application may be interested in knowing when it is close to
`a coffee shop or a movie theater. In this particular example,
`each coffee shop or movie theater known by the system
`could be an area of interest. As more coffee shops become
`available, their location could be dynamically added to the
`application such that the application is aware of them. Other
`location aware applications may define an area of interest as
`a particular store, sporting arena, bus stop, office building,
`and the like.
`[0040] FIG. 6 illustrates exemplary maps that may be
`used by a location aware application, in accordance with
`aspects of the invention. As illustrated, these maps are
`defined as a simple rectangle defined by latitude and longi-
`tude. Each of the four maps includes an upper left latitude
`and longitude and a lower right latitude and longitude. As
`discussed above with regard to FIG. 3, the maps may be
`defined in many different ways. Any location aware appli-
`cation could use these maps for display when appropriate.
`[0041] FIG. 7 illustrates an exemplary simulation screen-
`shot for a location aware application, in accordance with
`aspects of the invention. Within the simulator, two map
`views are displayed including a smaller more detailed view
`and a global, overall view. Illustrated on the maps are
`predefined areas of interest which are represented by circular
`regions and square regions. When the simulated movement
`enters or leaves an area, the developer may determine if the
`appropriate code they developed is working properly.
`Illustrative Operating Environment
`[0042] With reference to FIG. 1, one exemplary system
`for implementing the invention includes a computing
`device, such as computing device 100. In a very basic
`configuration, computing device 100 typically includes at
`least one processing unit 102 and system memory 104.
`Depending on the exact configuration and type of computing
`device, system memory 104 may be volatile (such as RAM),
`non-volatile (such as ROM, flash memory, etc.) or some
`combination of the two. System memory 104 typically
`includes an operating system 105, one or more applications
`106, and may include program data 107. In one embodiment,
`application 106 may include location aware programming
`interface 120 that is used in building location aware appli-
`cations for mobile devices. This location aware program-
`ming interface can be integrated with map selection, man-
`agement and rendering interfaces. This basic configuration
`is illustrated in FIG. 1 by those components within dashed
`line 108.
`
`[0043] Computing device 100 may have additional fea-
`tures or functionality. For example, computing device 100
`may also include additional data storage devices (removable
`and/or non-removable) such as, for example, magnetic
`disks, optical disks, or tape. Such additional storage is
`illustrated in FIG. 1 by removable storage 109 and non-
`removable storage 110. Computer storage media may
`include volatile and nonvolatile, removable and non-remov-
`able media implemented in any method or technology for
`storage of information, such as computer readable instruc-
`tions, data structures, program modules, or other data.
`System memory 104, removable storage 109 and non-
`removable storage 110 are all examples of computer storage
`media. Computer storage media includes, but is not limited
`to, RAM, ROM, EEPROM, flash memory or other memory
`technology, CD-ROM, digital versatile disks (DVD) or other
`optical storage, magnetic cassettes, magnetic tape, magnetic
`disk storage or other magnetic storage devices, or any other
`medium which can be used to store the desired information
`and which can be accessed by computing device 100. Any
`such computer storage media may be part of device 100.
`Computing device 100 may also have input device(s) 112
`such as keyboard, mouse, pen, voice input device, touch
`input device, etc. Output device(s) 114 such as a display,
`speakers, printer, etc. may also be included.
`
`[0044] Computing device 100 may also contain commu-
`nication connections 116 that allow the device to commu-
`nicate with other computing devices 118, such as over a
`network. Communication connection 116 is one example of
`communication media. Communication media may typi-
`cally be embodied by computer readable instructions, data
`structures, program modules, or other data in a modulated
`data signal, such as a carrier wave or other transport mecha-
`nism, and includes any information delivery media. The
`term "modulated data signal" means a signal that has one or
`more of its characteristics set or changed in such a manner
`as to encode information in the sig