An embodiment of the present invention relates to the field of location-based services and, more particularly, to providing location information in connection with a web site and/or web page, for example.
Currently, some web service providers provide location-based services. Examples of currently available location-based services include street maps, driving directions, local weather, restaurant locator services, etc. Typically, to use such location-based services, a user must fill in one or more fields on an associated web page to provide an indication of their current location such as a street address or zip code.
In other cases, organizations or businesses may wish to provide the location of their premises to users such that they can more easily determine a location convenient to them. Currently, there is no standard format for conveying this information.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements, and in which:
A method and apparatus for providing location information in connection with, for example, a web site or web page, are described. In the following description, particular software modules, components, systems, etc. are described for purposes of illustration. It will be appreciated, however, that other embodiments are applicable to other types of software modules, components, and/or systems, for example.
References to “one embodiment,” “an embodiment,” “example embodiment,” “various embodiments,” etc., indicate that the embodiment(s) of the invention so described may include a particular feature, structure, or characteristic, but not every embodiment necessarily includes the particular feature, structure, or characteristic. Further, repeated use of the phrase “in one embodiment” does not necessarily refer to the same embodiment, although it may.
For one embodiment, referring to
The computing system 200 includes a processor 205 including an execution unit 210 to execute instructions. The processor 205 may be, for example, a Pentium® M microprocessor or other microprocessor available from Intel Corporation of Santa Clara, Calif. Other types of processors, including graphics processors, embedded controllers or processors, digital signal processors, microprocessors from other sources and/or having different architectures, etc. are also within the scope of various embodiments.
A cache memory 215 may be coupled to and/or integrated with the processor 205 to store recently and/or frequently used instructions. The processor 205 may be coupled to a bus 220 to communicate information between the processor 205 and other components in the computer system 200.
Also coupled to the bus 220 are one or more input devices 225, such as a keyboard and/or a cursor control device, one or more output devices 230, such as a monitor and/or printer, one or more memories 235 (e.g. random access memory (RAM), read only memory (ROM), etc.) and other components 240 such as one or more antennae 241, a battery adapter 242 to receive a system battery, a memory controller, graphics controller, and/or a bus bridge, etc. (not shown). One or more mass storage devices and/or other network connectivity devices 245, such as one or more network interface cards (NICs) 246 may also be included. The NICs may act as and/or alternatively be referred to herein as sensors.
The mass storage device(s) and/or network connectivity devices 245 may further include a hard disk drive, a compact disc read only memory (CD ROM) drive and/or an optical disk drive. One or more of the NIC(s) 246 may operate to couple the computer system 200 to one or more other computer systems or mass storage devices over a wired or wireless network, for example. Further, the mass storage device(s) 245 may include additional or alternate mass storage device(s) that may be accessible by the computer system 200 over a network (not shown).
A corresponding data storage medium (or media) 250 (also referred to as a computer-accessible storage medium) may be used to store instructions, data and/or one or more programs to be executed by the processor 205. For one embodiment, the data storage medium (or media) 250 stores information, instructions and/or programs 252-274 that may be used for location-aware computing and/or to provide for automatically providing location information associated with the computing system 200.
For this exemplary embodiment, an operating system 252, system software 254 and application software 258 may be provided.
The operating system of one embodiment may be, for example a Windows™ operating system from Microsoft Corporation of Redmond, Wash. Other types of operating systems such as, for example, a Linux operating system, are within the scope of various embodiments. The operating system 252 may include drivers 260 associated with one or more components of the system 200, such as the NICs (or other sensors) 246.
The system software 254 of one embodiment may include a location fuser 262, one or more location providers 264, and/or a location application programming interface (API) 268. One or more plug-in modules 270 may also be included to provide for specific functionality. Various features and functions of these modules are described in more detail below.
The application software 258 may include, for example, one or more location aware applications 272 and a web browser 274.
Each of the software modules 252, 254 and 258 may include other modules and/or features not shown or described in conjunction with
Other computing systems configured in another manner are also within the scope of various embodiments. For example, while only a single bus 220 is shown, it will be appreciated that multiple buses may actually be used to interconnect the various components of the computer system in a different way. A front-side bus may be coupled directly between the processor and one or more chipset components, for example, while a peripheral bus may be coupled between one or more chipset components and one or more peripherals and/or other types of buses.
As mentioned above, the system software 254 may also include a module referred to herein as a location fuser 262. Where the operating system 252 is a Windows operating system, the location fuser 262 may be, for example, a windows service. The fuser 262 operates to combine, select and/or derive, through algorithmic and/or mathematical approaches, a reasonable approximation of the computer/user's location based on readings obtained from at least one of the plurality of sensors 246.
The location fuser 262 of one embodiment may include a property provider 317 to transmit location property information, a preferences layer 319 to manage user preferences, a pop-up or other user interface (UI) 321 and scripting capabilities 323 to provide for communication from browser content (e.g. web pages) and other script-based applications, for example. More specifically, the property provider 317 may verify privacy requirements for some embodiments, and, if appropriate, provide the value of the requested location propert(ies) by obtaining them from the fuser 262. The preferences layer 319 provides an interface for various kinds of user interfaces to be plugged in. Additional and/or different modules may be provided as part of the location fuser 262 for various embodiments.
A location service provider interface (SPI) 335 may be provided through which the fuser 262 may communicate with the various location service providers 311-313. One or more location aware applications 272 may communicate with the location fuser and other modules through a location API 322. Service APIs 324 may be included to provide communication between application software 258 and a service infrastructure 325.
Some elements of an exemplary service infrastructure 325 with which the system 200 may interact are shown in
As described herein, the computing system 200 including the elements shown in
At block 410, a user of, for example, the computing system 200, may access a web site that provides location-based services. The web site may be accessed over the Internet 350 or other network via a network interface, such as, for example, the WWAN NIC 309. While a connection between the WWAN NIC 309 and the Internet 350 is shown in
The web page may include an embedded web page plug-in and scripting for some embodiments. The scripting may be HTML scripting that runs in an HTML browser including, but not limited to ECMAScript in accordance with the ECMAScript specification referred to as ECMA-262 (3rd edition) promulgated by the European Association for Standardizing Information and Communication Systems, formerly known as the European Computer Manufacturer's Association (ECMA). Other scripting languages such as JavaScript from Netscape Corporation of Mountain View, Calif. or JScript from Microsoft Corporation of Redmond, Wash., for example, may alternatively be used.
The scripting may initiate a query at block 420 to extract one or more location properties (e.g. latitude, longitude, altitude, street address, city, state, postal code, etc.) from the property provider 317. For some embodiments, the scripting may make use of the embedded web page plug-in or one or more plug-ins 270 in executing this query. For example, the embedded scripting may make procedure calls to code stored inside a plug-in such that the plug-in effectively serves as a procedure call library. For some embodiments, where a Windows operating system is used, an HTML plug-in may be a Windows DLL that is plugged in to the HTML page by virtue of the HTML <object> tag, which declares the location of the DLL, its Globally Unique Identification (GUID) number, and assigns it a JavaScript (or other type of script) object name. Other approaches for providing similar functionality are within the scope of various embodiments.
At block 425, for some embodiments, it may be determined whether location-aware computing is enabled and/or whether any privacy preferences have been specified as described in copending U.S. patent application Ser. No. 10/663,478, entitled, “A Method and Apparatus for Managing the Privacy and Disclosure of Location Information” referenced above. If location-aware computing is enabled and privacy preferences permit, then, at block 430, a query may be initiated, for example, by the location fuser 262 to return the requested location properties.
For one embodiment, the query by the location fuser 262 is handled by one of the location providers 311-313 to obtain the requested location information from the service infrastructure 325 using sensor readings from the associated driver 260 and NIC 305, 307 and/or 309. More specifically, the location fuser 262 may query one or more of the location providers 311-313 via the SPI 335. In response to this query, each of the location providers may make standard and/or custom procedure calls to respective device drivers 260 to extract sensor readings from NICs 305, 307 and/or 309. While this connection is not explicitly shown in
As described above, the fuser 262 combines, selects or derives a substantially best approximation of the actual computer/user's location using an algorithmic and/or mathematical approach based on sensor readings obtained from device drivers 260 and/or supplemental location descriptions obtained from location servers 329, 331 and/or 333.
It will be appreciated by those of ordinary skill in the art that the fuser 262 may also or alternatively use cached sensor readings or supplemental location descriptions from prior events, rather than executing all of the sequences described above. It will also be appreciated that other approaches for obtaining location information are within the scope of various embodiments.
At block 435, the scripting associated with the web page causes the location properties or other location information to be submitted to the web site by entering the location information into HTML or other fields (e.g text boxes or hidden fields) associated with the web page or directly by submitting either “GET” or “POST” style CGI (Common Gateway Interface) parameters, for example.
At block 440, in response to automatically providing location information as described above, the computing system 200 may then display in the browser 274 a new web page associated with the web site, where the new web page provides locale-specific content. For example, if the web site is a retailer web site, the first-displayed web page may provide general content about the retailer. After automatically providing location information, the second-displayed web page may show retailer locations close to the determined location.
From a server perspective as shown in
At block 510, location information associated with a client computing system is received where the location information was automatically provided by the client computing system, at least in part, through executing at least one of the scripting and the plug-in.
At block 515, the web site provides a second web page to the client computing system. The second web page may include locale-specific content based on the location information automatically provided by the client computing system.
Using the approaches of some embodiments for automatically providing location information, it may be possible to improve ease of use of some aspects of computing versus having to enter such data manually.
It will be appreciated that, for various embodiments, the methods described above in reference to
For certain web sites, as described above, it may be desirable to provide location-related information. For example, retailers, organizations, businesses, etc. may wish to make the locations of their premises available to those who access their web sites. There is currently no standard format for conveying this type of information such that it may be processed automatically by software on a client computing system.
For one embodiment an approach to embedding location information in a web site is provided such that the location information can be conveyed to users' computing systems and processed automatically to, in some cases, provide locale-specific information as described in more detail below.
Where the page 605 is an HTML page, the page 605 may be constructed to include embedded XML (Extensible Markup Language) islands 607 that provide location information in a format that may be automatically processed by client software, for example. For one embodiment, a set of XML tags (i.e. a schema) may be defined to provide for any HTML author to embed a description of a location. This XML description may include, but not be limited to latitude, longitude, altitude, street address, city, state, postal code and country, for example. For a retailer, for example, this schema may provide for embedded descriptions of all the stores or sales outlets of a company. Such information may be particularly useful at a web site home page, but may be used for any page.
An example XML location schema that may be used for one or more embodiments to embed location information is provided below with example data. It will be appreciated that a different schema may be used for various embodiments.
XML island example HTML code is provided below for purposes of illustration. It will be appreciated that the code is merely illustrative, that different code may be used for different purposes and/or to implement similar features in a different way and that different location information may be embedded using a similar approach. This particular example code may be embedded to indicate locations of retail dealerships:
Associated visual elements of the HTML page may appear as names of individual sites or retail outlets, for example. For this example, the names of retail dealerships may be displayed while associated location information may be embedded as described.
The client computing system 610, which may be similar in configuration and operation to the computing system 200 of
The location-enhanced browser may further include an improved graphical user interface (GUI) 620 for accessing/viewing location information. For example, the GUI 620 may provide a special toolbar or location bar in the browser that provides the ability to view the location information specific to a web site, filter the content by user selection, allow search queries and/or provide other location-based services including, but not limited to, mapping and driving directions. Instead of, or in addition to the location bar, a different type of location-related tool or capability may be provided. Examples include a location applet on the Windows or other operating system System Tray, a location viewer embedded onto the Windows or other Desktop area (e.g. when the Windows Active Desktop feature is enabled), a location tile in a sidebar area, or another location-related feature.
Several different types of capabilities may be provided to filter the location-related content. For example, a filter may be applied to identify from a list of locations the location(s) nearest the computing system or other specified location and possibly sort the locations in order of increasing distance from the location of interest. Other types of filtering may be applied to provide information such as, for example, a shortest route between two points, best detour and/or location with best advertised price, hours of operation, etc nearest to a selected location. It will be appreciated that the examples given above are merely for purposes of illustration and that many other possibilities for providing location-related features and/or applying filters are within the scope of various embodiments.
For some embodiments, where the client computing system includes similar capabilities to the computing system 200 of
Alternatively, instead of having a location-enhanced browser, scripting, such as JavaScript code, may be embedded in the web page to search for such XML tags and interpret them to extract the location information that may not otherwise be visible to a conventional browser. In this manner, a conventional browser can essentially be location-enhanced on the fly. Other approaches for embedding location information using other languages, tags, etc. and for being able to locate and use such information are within the scope of various embodiments.
At block 705, a web site is accessed and at block 710, an associated web page is received. The associated web page includes embedded XML islands that contain location information such as, for example, retail sales locations associated with the web site. It will be appreciated that other approaches for embedding location information may be used for other embodiments, where embedded location information refers to location information that is not otherwise observed using a conventional view of a conventional browser. At decision block 715, it is determined whether a location enhanced browser or other capability for interpreting XML islands is available. If not, then at block 720, the web page displays in the browser without the information provided by the XML islands.
If a location enhanced browser or other capability for accessing the information provided by the XML islands is provided, then at block 725, the browser or other capability detects the locale-specific XML code. For some embodiments, at block 730, a locale-specific graphical user interface including, for example, a location bar, may then be provided. Additionally, for some embodiments, a current location of a client computing system may be determined and used to filter the location information provided via the XML islands.
It will be appreciated that the methods of
Using the approaches of various embodiments for embedding location information in web sites and/or web pages, and/or receiving web pages with such embedded information, ease of use in working with some location information may be improved. In particular, according to one or more embodiments, an approach to embedding location information is provided such that software on a client computing system may be able to automatically process such location information to provide enhanced usability and/or services.
Thus, various embodiments of a method and apparatus for providing and accessing location information are described. In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be appreciated that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. For example, while the exemplary embodiments described above request location information from external entities in response to a query, for other embodiments, location information may be previously ascertained and stored in an accessible and known location. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
The present application is related to co-pending U.S. patent application Ser. No. 10/663,478, entitled, “A Method and Apparatus for Managing the Privacy and Disclosure of Location Information,” Attorney Docket No. 42.P17784, filed Sep. 15, 2003 and assigned to the assignee of the present invention.