CN105659637A - 在设备上缓存位置 - Google Patents
在设备上缓存位置 Download PDFInfo
- Publication number
- CN105659637A CN105659637A CN201480053964.0A CN201480053964A CN105659637A CN 105659637 A CN105659637 A CN 105659637A CN 201480053964 A CN201480053964 A CN 201480053964A CN 105659637 A CN105659637 A CN 105659637A
- Authority
- CN
- China
- Prior art keywords
- equipment
- geographical coordinate
- server
- buffer memory
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/08—Access security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/02—Services making use of location information
- H04W4/029—Location-based management or tracking services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2101—Auditing as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2111—Location-sensitive, e.g. geographical location, GPS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2115—Third party
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
- Telephonic Communication Services (AREA)
Abstract
描述用于从设备上的缓存获得位置的多种设备,系统和方法。在多个实施例中,获得的位置基于在移动设备处生成的数据。附加的实施例涉及缓存命中确定技术和用于共享、管理和预传播缓存的技术。
Description
技术领域
本发明涉及各种类型的电子设备。更具体地,本发明涉及设备上的用于存储位置信息的缓存(cache)。在多个实施例中,所述设备是移动设备,包括但不限于智能电话、智能眼镜、智能手表、平板电脑或其它类型计算设备。
背景技术
现代的智能电话提供各式各样的特征。一个有用的特征是检测智能电话的位置的能力。更具体地,智能电话能够确定设备是否处于已知地标或处于特定城市或地址。
这种技术可以在各式各样的应用中使用。例如,一些应用允许移动设备作为数字日志或日记使用。当用户正在将新条目录入他或她的日志中时,智能电话可以自动地确定他或她所在的城市并且将它附加到日志条目中。结果,用户可以稍后查看这些日志条目并且迅速地回想起记录这些日志条目时所在的所有地方。
用于获得智能电话的位置的已知过程可以如下描述。最初,智能电话识别与设备的当前位置相关联的地理坐标。地理坐标的众所周知的例子是一对纬度-经度坐标。典型地,这种坐标基于从全球定位系统(GPS)卫星获得的数据。然后移动设备向合适的服务器发送坐标。服务器分析坐标并且确定与它们关联的位置(例如,城市名称、地址、国家等等)。此确定过程通常被称为“逆地理编码(reversegeocoding)”。服务器将位置数据发送回移动设备。然后移动设备利用位置数据,例如,移动应用可以然后向用户通知他或她已经进入由逆地理编码服务器识别出的城市。在各种实现方案中,每当应用需要当前位置时,必须重复此过程。
发明内容
技术问题
在需要频繁更新设备的位置的应用中,诸如许多生活日志和旅游应用,重复的服务器请求可能消耗相当大量的电池电力和带宽。
技术方案
本发明的实施例提供一种用于确定设备的位置的方法,包括:如果设备的地理坐标匹配存储在设备上的已经访问过的地理坐标,则使用设备的传感器检测该设备的地理坐标;基于该已经访问过的地理坐标获得设备的位置;以及使用该设备的位置执行功能。
附图说明
通过参考以下结合附图的描述,可以最佳地理解本发明及其优点,其中:
图1是示出根据本发明的特定实施例的、包括移动设备和服务器的通信系统的框图。
图2是根据本发明的特定实施例的、用于管理移动设备上的位置缓存的方法的流程图。
图3是示出根据本发明的特定实施例的缓存的示例内容的图。
图4是根据本发明的特定实施例的、用于生成和使用邻近域的方法的流程图。
图5、图6A、图6B和图7是示出根据本发明各种实施例的、示例缓存命中(hit)确定方案。
图8是根据本发明的特定实施例的、用于位置跟踪应用的方法的流程图。
图9是根据本发明的特定实施例的、用于照片应用的方法的流程图。
图10是根据本发明的特定实施例的、用于照片应用的示例用户界面。
图11是根据本发明的特定实施例的、用于推荐地理坐标和/或位置的方法的流程图。
图12是根据本发明的特定实施例的、用于预传播(prepropagating)设备上的位置缓存的方法的流程图。
图13A、图13B、图13C是示出根据本发明的特定实施例的、域(domain)可以如何被计算的图。
图14是示出根据本发明的特定实施例的、朝向替代位置移动的设备的图。
图15是示出根据本发明的特定实施例的、多个联网设备的图。
图16是根据本发明的特定实施例的、用于在多个设备之间共享缓存数据的方法的流程图。
图17是根据本发明的另一实施例的、用于在多个设备之间共享缓存数据的方法的流程图。
图18是根据本发明的另一实施例的、用于选择和访问外部设备的缓存的方法的流程图。
图19是根据本发明的特定实施例的设备的框图。
图20是根据本发明的特定实施例的服务器的框图。
在附图中,类似参考标记有时用于指定类似结构元件。还应该理解地是,附图中的描绘是示意性的而非按比例的。
具体实施方式
最佳实施方式
本发明的实施例提供一种用于确定设备的位置的方法,包括:如果地理坐标匹配存储在设备上的已经访问过的地理坐标,则使用设备的传感器检测设备的地理坐标;基于已经访问过的地理坐标获得设备的位置;以及使用设备的位置执行功能。
所述方法还可以包括:如果地理坐标不匹配存储在设备上的已经访问过的地理坐标,则向服务器发送对于与地理坐标相关联的位置的请求;从服务器接收指示位置的响应;以及将从服务器接收到的位置存储在缓存中。
所述方法还可以包括:在设备中生成一个或多个邻近域(proximitydomain),每个邻近域与不同位置相关联;以及通过确定地理坐标是否在邻近域中的一个之内来确定地理坐标是否匹配存储在设备上的已经访问过的地理坐标。
所述一个或多个邻近域可以在所述设备而非在另一外部设备处生成。
所述缓存可以存储先前在设备中获得的多个地理坐标,并且每个邻近域可以至少部分地基于存储在缓存处的地理坐标中的至少一个。
所述邻近域的生成可以包含从由凸包、凹包、半径形成的圆、被缓存的地理坐标的预定距离之内的地理坐标、获得的地理坐标的预定距离之内的地理坐标、隐式正方形散列(implicitsquarehashing)、R树分割、空间索引以及至少部分地通过被缓存点定义的预定范围组成的组中选择至少一个。
所述方法,作为第一设备的设备,还可以包括:获得从使用短程网络连接到第一设备的第二设备的缓存获取缓存数据的许可;从第二设备获得缓存数据;在第一设备的缓存中存储获得的缓存数据;以及使用获得的缓存数据执行位置的获得。
所述方法,作为第一设备的设备,还可以包括:在网络上检测第二设备,该第二设备具有用于存储位置数据的缓存;在第一设备,基于从由可用带宽、可用电池电力、可用处理能力、预期存储在缓存中的数据的量以及可用存储器存储量组成的组中选择的至少一个,确定第一设备是否将访问第二设备的缓存;以及当确定第一设备将不访问第二设备的缓存时,在本地从第一设备的缓存获得与地理坐标相关联的位置;以及当确定第一设备将访问第二设备的缓存时,从第二设备的缓存接收位置并且在第一设备上的缓存中存储位置。
所述方法还可以包括:在服务器处从设备接收状态数据;在服务器处确定将向设备预传播(prepropagate)位置数据;从服务器向设备发送位置数据;在设备处的缓存中存储位置数据;以及至少部分地基于从服务器接收到的位置数据来获得位置。
所述方法还可以包括:基于确定的移动和方向确定设备正在沿特定方向移动;选择位于设备的预期路径上的一个或多个位置;以及向设备发送所述一个或多个位置以存储在缓存中。
所述方法还可以包括:预计算每个覆盖设备的预定距离之内的行政区域的一个或多个区域(region);以及向设备发送所述一个或多个区域以存储在缓存中。
所述方法还可以包括:确定不存在缓存命中;从设备向服务器发送对于与地理坐标相关联的位置的请求;在服务器处确定与地理坐标相关联的第一位置;基于从由第一位置到第二位置的邻近、用户简档、用户设置、设备的过去位置、由用户提供的兴趣以及来自其他设备的逆地理编码请求组成的组中选择的至少一个来推荐第二位置;从服务器向设备发送指示第一位置和第二位置的数据;以及在设备上的缓存中存储第一位置和第二位置。
所述方法还可以包括:基于当前位置和从由用户历史、用户简档、用户设置、设备的过去位置以及由用户提供的兴趣组成的组中选择的至少一个来推荐一个或多个其它地理坐标;确定多个地理坐标中的每个地理坐标是否匹配存储在设备上的已经访问过的位置,所述多个地理坐标包括获得的地理坐标和所述一个或多个推荐的地理坐标;当所述多个地理坐标中的特定一个匹配存储在设备上的已经访问过的位置时,执行从缓存获得位置;以及当所述多个地理坐标中的特定一个不匹配存储在设备上的已经访问的位置时,向服务器发送对于位置的请求并且从服务器接收位置。
所述方法还可以包括:确定用户正在运行从由旅游应用和用于引导盲人的应用组成的组中选择的应用;以及生成向用户通知位置的音频消息。
所述方法还可以包括:确定用户正在运行生活日志应用;从用户接收指示期望新日志条目的输入;以及将日志条目与位置相关联。
所述方法还可以包括:确定设备的用户正在设备上运行地理围栏应用;从用户接收指示当用户处于特定目标位置时期望提醒的输入;以及当位置匹配由用户指定的目标位置时,向用户通知该提醒。
所述方法还可以包括:确定设备的用户启动了设备中的照片应用;自动地获得用于每个照片的地理坐标,其中该地理坐标帮助识别照片拍摄的地点;以及基于从服务器或缓存接收到的位置将照片组织成不同的组。
所述方法还可以包括:从用户接收指示获得的位置不正确并且应该被校正的输入;以及基于用户输入校正位置并且在缓存中存储校正后的位置。
所述方法还可以包括缓存,该缓存包括多个缓存条目,并且每个条目包括指示地理坐标以及与地理坐标相关联的一个或多个位置的数据,该地理坐标指代地理坐标系统中的特定点。
本发明的一个实施例提供一种计算机可读存储介质,其包括具体实现为有形形式的可运行的计算机代码,可操作该计算机代码以确定设备的位置,其中该计算机可读存储介质包括:可操作以使用设备的传感器检测设备的地理坐标的可运行的计算机代码,可操作以如果地理坐标匹配存储在设备上的已经访问过的地理坐标则基于已经访问过的地理坐标获得设备的位置的可运行的计算机代码,以及可操作以使用设备的位置执行功能的可运行的计算机代码。
所述计算机可读存储介质还可以包括可操作以如果地理坐标不匹配存储在设备上的已经访问过的地理坐标则向服务器发送对于与地理坐标相关联的位置的请求的可运行的计算机代码:可操作以从服务器接收指示位置的响应的可运行的计算机代码;以及可操作以将从服务器接收到的位置存储在缓存中的可运行的计算机代码。
本发明的一个实施例提供包括至少一个处理器、包含计算机可读存储介质的至少一个存储器的设备,该计算机可读存储介质包括以有形形式存储的计算机代码,其中当由所述至少一个处理器运行时所述计算机代码使得设备:使用设备的传感器检测设备的地理坐标;如果地理坐标匹配存储在设备上的已经访问过的地理坐标,则基于已经访问过的地理坐标获得设备的位置;以及使用设备的位置执行功能。
所述计算机可读存储介质还包括计算机代码,当由所述至少一个处理器运行该计算机代码时,其使得设备:如果地理坐标不匹配存储在设备上的已经访问过的地理坐标,则向服务器发送对于与地理坐标相关联的位置的请求;从服务器接收指示位置的响应;以及将从服务器接收到的位置存储在缓存中。
本发明的实施例提供一种设备,其包括:传感器,被配置为检测设备的地理坐标;存储器件,被配置为存储多个已经访问过的地理坐标;以及处理器,耦接到传感器和存储器件,被配置为基于将设备的地理坐标与所述多个已经访问过的地理坐标中的特定一个匹配来获得设备的位置。
所述处理器还可以被配置为:如果地理坐标不匹配所述多个已经访问过的地理坐标中的任何一个,则向服务器发送对于与地理坐标相关联的位置的请求。
在一个方面,将描述从缓存获得位置的方法。在各种实施例中,所获得的位置基于已在设备处生成的数据。所述已在设备处生成的数据可以取决于特定应用的需要而各种各样地变化。在一些实施例中,例如,所述设备生成帮助确定是否已经发生缓存命中的邻近域或结构。任一合适的算法、方案、结构或机制可以用于管理缓存。
一些实施例涉及用于从服务器获得位置数据并且在设备处缓存该位置数据的方法。地理坐标(例如,纬度坐标和经度坐标)被获得。基于地理坐标和存储在缓存中的数据做出关于是否存在缓存命中的确定。当存在缓存命中时,从设备上的缓存中获得位置。当不存在缓存命中时,向服务器发送对于与地理坐标相关联的位置的请求。从服务器接收指示位置的响应。从服务器接收到的所述位置然后被存储在缓存中。
所述缓存命中确定可以以多种方式做出。在一些实现中,例如,一个或多个邻近域被生成。每个邻近域与一个或多个位置(例如,地址、城市的名称、省、国家、地区、地标、建筑物、组织(organization)、企业等等)。在多个实施例中,每个邻近域帮助指示地理坐标与相应位置相关联。基于邻近域做出是否存在缓存命中的确定。当获得的地理坐标在邻近域之内时存在缓存命中。在各种实施例中,邻近域至少部分地基于获得的地理坐标、缓存的地理坐标,或两者。一些缓存命中确定涉及凹包、凸包、半径形成的圆、隐式正方形散列、R树分割、空间索引或任一其他适用技术。
多个实现涉及移动设备、服务器及管理或在缓存中存储位置数据的其他系统。额外的实施例涉及用于共享缓存数据、预传播缓存、校正缓存数据以及推荐位置的多个缓存相关或位置相关的软件应用、方法和系统。
实施方式
一些应用,诸如生活日志和旅游应用,向服务器频繁地做出逆地理编码请求。举例来说,为了确定移动设备是否已经到达特定城市或其他已知行政区域,传统的移动设备做出服务器呼叫以请求将地理坐标(例如,GPS导出的经度/维度坐标对)转换成为可识别的位置名称(例如,LosAngeles、SanFrancisco、75W.PlumeriaDr.等等)。)
频繁的逆地理编码请求增加网络延时和电池消耗。本发明的各种实施例解决这个问题。更具体地,位置数据被缓存在移动设备上。当移动设备接下来需要地理坐标的逆地理编码时,移动设备检查缓存以查看位置是否存储在其中。如果没有,则移动设备与服务器协商。一旦服务器提供期望的位置,则该位置被存储在移动设备处以使得该位置可以在将来再次被访问。考虑到一般人倾向于在相对有限的地区之内度过他们的大部分时间,一旦缓存被部分地用先前访问过的位置填充,则缓存命中(cachehit)的可能性相当高。通过减少对服务器呼叫的需要,缓存的使用有助于大大地降低带宽和电池消耗。
最初参照图1,将描述根据本发明的特定实施例的通信系统100。所述系统包括设备102和服务器104。设备102和服务器104使用一个或多个网络彼此通信。设备还包括位置缓存106。移动设备102利用通信系统100发送逆地理编码请求并且从服务器104获得位置数据。
任一合适的网络108可以被用于连接设备102和服务器104。在各种实施例中,网络包含但是不局限于基于CDMA或GSM的蜂窝网络,互联网或任一其他合适的协议或任一其他通信网络。
在此特定示例中,移动设备102正在运行尝试确定其当前位置的应用。存在需要识别一个或多个位置的许多类型的移动应用。例如,用户可能正在运行被期望当用户已经进入新城市或已经到达特定地标时通知该用户的程序。
通常,当位置被期望时,设备102将检查缓存106。如果缓存106不能提供期望的位置,则设备102将使用网络108做出服务器呼叫。然后设备102将从服务器104获得期望的位置数据并且将它存储在缓存106中。随时间过去,缓存将收集与多个位置相关的数据。当这些位置被再次访问时,可以从缓存而不是从服务器检索位置数据。服务器呼叫数量的减少帮助降低带宽和电力消耗。下面描述使用缓存106和通信系统100的方法的更详细的讨论。
接下来参照图2,将描述使用图1的缓存106和系统获得位置的示例方法200。最初,在步骤202中,获得地理坐标。地理坐标是帮助识别或指向特定位置的一个或多个代码、序列、坐标、符号或机制。在多个实现方案中,地理坐标是映射或覆盖目标地区的更大坐标/映射系统的一部分。例如,纬度-经度坐标是覆盖整个世界的地理坐标系统的一部分。在该系统中,每个特定地理坐标精确定位(pinpoint)世界上的特定点或位置。通常,地理坐标被以如下方式编码或写入,即,该地理坐标所指代的位置的名称(例如,街道地址、地标的名称、城市的名称等等)不是外行立即可识别的,直到该地理坐标被进一步翻译或分析。用于确定地理坐标与之相关联的(多个)位置的过程通常被称为逆地理编码。
在示出的实施例中,地理坐标是一对坐标,即,在GPS卫星的帮助下获得的纬度和经度坐标。即,移动设备102包括从多个GPS卫星接收数据的GPS接收器。在此示例中,移动设备使用三角测量以帮助确定相应于地球上的特定位置的正确的纬度和经度坐标,但是任一合适的系统都可以用于获得该地理坐标。在此特定示例中,移动设备获得相应于纬度和经度坐标37.803901和-122.464135的地理坐标。
一旦获得地理坐标,就做出关于是否存在缓存命中的确定(步骤204)。即,移动设备102确定是否可以在缓存106中找到与获得的地理坐标相关联的位置。缓存106是用于在移动设备102中存储位置数据的任一机制或系统。通常,缓存106被布置以帮助指示哪些地理坐标相应于一个或多个位置。缓存106可以涉及任一已知缓存格式或结构。
步骤204的缓存命中确定可以取决于特定应用的需要以各式各样的方式执行。在一些实施例中,例如,缓存106包括每个将特定地理坐标或地理坐标范围与一个或多个位置关联的条目。在一些应用中,缓存命中可能需要在步骤202中获得的地理坐标与存储在缓存中的地理坐标之间的(几乎)精确匹配。在其他应用中,推断导致缓存命中的、在缓存中的数据或地理坐标与获得的地理坐标之间的关系。即,不需要精确的地理坐标匹配。稍后将在应用中讨论各种示例技术。
如果不存在缓存命中,即,如果缓存不能提供与获得的地理坐标相关联的位置,则向服务器发送对于与获得的地理坐标相关联的位置的请求(步骤210)。移动设备通常通过网络向服务器104发送地理坐标。
服务器104确定相应的位置并且将它发送到移动设备102。在一些实施例中,服务器104使用已知地图服务诸如谷歌地图或OpenStreetMap,执行逆地理编码。在此特定示例中,服务器104确定纬度和经度坐标37.803901和-122.464135相应于SanFrancisco市。
在多个实施例中,服务器104响应于逆地理编码请求提供多个位置。在一些情况下,多个位置表示多个重叠的行政区域或地区。在示出的实施例中,例如,服务器104确定地理坐标37.803901,-122.464135不仅表示SanFrancisco市,而且位于California州,在1199东海岸,并且在称作CrissyField的位置,其是处于SanFrancisco的北端的受欢迎的休闲娱乐区。然后所有这些位置都被发送给移动设备102。可替代地或额外地,在各种实现方案中,服务器返回可能感兴趣的和/或在该设备附近的推荐位置,即使移动设备102还没有访问那些位置。这些推荐位置的识别可以基于多种因素,包括但不限于用户简档、用户动作和移动的历史、以及存储在移动设备102或服务器104上的任一其他数据。
在示出的实施例中,服务器104向移动设备102发送以上(多个)位置。可选地,服务器104还发送与每个位置或位置集合相关联的地理坐标。发送的位置数据的精确格式可以变化很大。在一些实现方案中,例如,发送的数据包括一个或多个条目,其中每个条目涉及单个地理坐标(例如,规定地球上的特定点的一对纬度-经度坐标)以及该地理坐标所对应的一个或多个位置。
移动设备102从服务器104接收一个或多个位置(步骤212)并且准备将它们存储在缓存106中(步骤214)。如果缓存106已满和/或在选定的其他条件下,则移动设备102可选地从缓存除去一个或多个条目(步骤213)以增加缓存106的存储容量。
可以取决于特定应用的需要以多种方式执行缓存条目的除去。在一些实施例中,例如,首先除去最近最少使用的条目(即,未被包括在缓存命中达最长时间段的条目)。在其他实施例中,首先除去最不常用的条目。仍在其他实施例中,除去相应于距离移动设备的当前位置最远的位置的缓存条目。一些实现方案涉及除去缓存条目的关联分组,而不是仅仅一个缓存条目。例如,如果移动设备102确定用户正在离开城市和/或确定特定城市长期没有被访问,则缓存中的相应于该城市中的位置的一些或所有条目被除去。在多个实施例中,移动设备确定当特定缓存条目被除去(例如,基于最近最少使用(LRU)或最不常使用(LFU)策略)时,与该缓存条目具有特定类型的关系的全部缓存条目也被除去。任一合适的类型的关系可以触发缓存条目的除去。例如,如果将除去与SanFrancisco中的位置A相关的缓存条目,则移动设备还可以除去缓存中与在位置A的预定距离之内或者由也访问位置A的人经常访问的任一位置相对应的条目。应该理解地是,任一已知缓存算法、结构或机制都可以用于将条目插入到缓存中、从缓存除去条目或以其它方式操作缓存。
在步骤214中,移动设备102在缓存106中存储从服务器104接收到的位置数据。数据存储在缓存106中并且它的格式可以变化很大。可以使用任一已知缓存结构、空间索引或算法以存储和组织位置数据。缓存可以是移动设备102的一部分或者与该设备分离(例如,外部存储设备、在线存储器等等)。在一些实施例中,索引值被计算并且使用索引值以空间索引结构或者任一其他合适的结构来存储位置数据。
图3中示出一个示例实施例。在此示例中,缓存106存储多个条目,其中每个条目都包括地理坐标(以纬度和经度坐标对的形式)以及坐标对所表示或所对应的(多个)位置。在图3中,缓存的每个条目指示在步骤202中先前获得的地理坐标以及由设备102先前访问的位置,但是这不是必须的。举例来说,在一些应用中,缓存106包括不表示设备的过去移动的条目,而是已从另一设备或服务器获得的条目。
在步骤216中,运行在移动设备上的应用利用从服务器接收到的位置数据。在此示例中,移动设备正在运行定期地向用户通知设备的位置的改变的程序。移动设备因此向用户通知(例如,使用音频和/或它的显示器上的通知)该用户已经到达CrissyField,其位于1199东海岸,SanFrancisco,California。
返回到图2的步骤204,如果确定存在缓存命中,则从缓存106获得位置数据(步骤206)。即,不需要或不执行服务器呼叫,而是在本地获得位置数据。在多个实现方案中,当存在缓存命中时,用于在步骤202中获得的地理坐标的新条目不被添加到缓存106。即使获得的地理坐标不同于存储在缓存106中的任一地理坐标,也可能如此。例如,当缓存命中被推断出并且不涉及获得的地理坐标与缓存的地理坐标之间的精确匹配时,可以出现此情形,例如,如之前根据图5、图6A和图6B讨论的那样。
从缓存接收到的该类型的位置数据可以与响应于逆地理编码请求从服务器接收到的位置数据(即,在步骤212中从服务器接收到的位置数据)相同或类似。因此,位置数据可以包括一个或多个位置,包括但不限于地址、建筑物名称、街道名称、城市或其他行政区域的名称等等。在步骤208中,在设备上的应用中使用从缓存获得的一个或多个位置(例如,如在步骤216中讨论的)。
在一些实现中,用户可以校正错误的缓存条目。例如,假定移动设备102获得地理坐标(步骤202),确定存在缓存命中(步骤204),并且从缓存获得位置(步骤206)。从缓存中的被推断为适用于所获得的地理坐标的特定缓存条目获得该位置。缓存条目与特定位置(例如,Daly市)相关联。在此示例中,该位置被预期表示应用向移动设备用户显示的当前位置。然而,移动设备用户可以发现引用的位置不正确(例如,用户可能知道他或她在SanFrancisco,但是由缓存提供的位置指示SanFrancisco南部的Daly市)。在一些应用中,然后用户可以将正确的位置(例如,SanFrancisco)输入到移动设备102的用户接口中。移动设备102然后利用正确的位置名称校正错误的缓存条目。
接下来参照图4,将描述根据本发明特定实施例的、用于确定缓存命中的方法400。此方法提供如图2的步骤204中描述的用于确定缓存命中的示例技术。最初,执行图2的方法200的头两个步骤(步骤402)。即,获得一个或多个地理坐标(图2的步骤202)并且访问缓存以确定是否已经发生缓存命中(图2的步骤204)。
可以取决于特定应用的需要以各式各样方式执行缓存命中确定。在一些实施例中,例如,生成一个或多个邻近域(步骤404)。通常,每个邻近域与一个或多个位置相关联(例如,城市、地标、地址的名称等等)。邻近域是帮助确定特定地理坐标是否指示关联的一个或多个位置的任一合适的域、范围、算法、结构、方案或机制。在一些实现中,例如,邻近域帮助定义地理坐标的范围或集合(例如,纬度和经度坐标)。如果特定地理坐标落在邻近域之内,则假定地理坐标指示与该邻近域相关联的相同的(多个)位置。在步骤406中,分析一个或多个邻近域以确定在图2的步骤202中获得的(多个)地理坐标是否在邻近域中的一个之内。
图5、图6A、图6B和图7指的是若干示例邻近域类型和缓存命中确定技术。应该理解,这些方法是示例性而非意欲进行限制。它们可以酌情修改并且可以使用任一已知类型的邻近域或缓存确定技术。
参照图5,使用凸包(convexhull)502以做出缓存命中确定。使用包的示例过程可以被描述如下。在示出的实施例中,地理坐标1、2、3和4存储在缓存中,并且因此表示已知位置。它们还可以表示设备已经访问过和/或在图2的步骤202中获得的地理坐标,但是这不是必须的。为了此示例的目的,假定地理坐标1、2和3中的每个都是一对纬度-经度坐标,它们与California州的SanFrancisco中的位置相关联并且表示所述位置。点4被假定为与SanFrancisco外部的不同位置相关联的纬度-经度坐标。
因为已知缓存的地理坐标1、2和3对应于SanFrancisco,所以假定画出为连接三个点的包502将定义也与SanFrancisco相关联的邻近域。即,假定落在包502之内的任一地理坐标也与SanFrancisco相关联。假定点Q指的是在图2的步骤220中获得的新地理坐标。如果是该情况,则将找到缓存命中,因为地理坐标Q在通过其他缓存的地理坐标1、2和3定义的包502之内。然而,如果点Q落在通过缓存的地理坐标定义的任一包之外,则在一些实施例中,将确定存在缓存未中(cachemiss),即,不能从缓存获取位置并且需要服务器呼叫。
图6A和图6B利用稍微不同类型的邻近域。在示出的实施例中,例如,邻近域通过距缓存的地理坐标或新的地理坐标(即,在图2的步骤202中获得的地理坐标)的距离或半径来定义。在图6A中,缓存命中确定过程涉及确定在新地理坐标Q的预定半径r之内是否存在任何缓存的地理坐标。在此示例中,存在一个这种缓存的地理坐标,其被指定为图中的地理坐标1。在这种情况下,假定存在缓存命中并且新的地理坐标对应于与缓存的地理坐标1相同的位置。即,如果缓存的地理坐标1与LosAngeles市相关联,则假定新的地理坐标也与LosAngeles市相关联并且也涉及该市中的位置。如果新的地理坐标Q不在任一缓存的地理坐标的半径r之内,则在一些实施例中,确定存在缓存未中。
在图6B中,半径形成的圆的中心是缓存的地理坐标,而不是新的地理坐标。即,做出关于新的地理坐标Q是否在缓存的地理坐标中的任何一个的半径r之内的确定。在图6B的示出的示例中,地理坐标Q在缓存的地理坐标1的半径r之内,并且因此确定存在缓存命中。在那种情况下,与缓存的地理坐标1相关联的位置被假定为是与新的地理坐标Q相关联的位置。如果新的地理坐标Q不在缓存的地理坐标中的任何一个的半径r之内,则在一些实施例中,确定存在缓存未中。
图7表示定义邻近域并做出缓存命中确定的再一个方式。此方法基于的概念是地区或地理区域可以被分割为具有长度L的相邻的正方形。每个正方形与一个或多个位置相关联(例如,城市名、州名、地址等等)。即,每个正方形定义全部与相同位置相关联的地理坐标的全部或部分。一个或多个这些正方形可以使用任一合适的值、格式或结构被缓存在移动设备中。为了确定是否存在缓存命中,分析缓存的正方形和新的地理坐标。如果在这些缓存的正方形中的一个之内找到新的地理坐标,则假定存在缓存命中。即,假定新的地理坐标表示或涉及与通过正方形表示的位置相同的位置。
可以以多种方式实现以上方法。在示出的实施例中,例如,具有边长L的每个正方形通过地理坐标(例如,一对纬度-经度坐标)表示。正方形的长度L确定每个坐标的精度,并且因此确定坐标中的数字(digit)或小数位(decimalplace)的数目。存储在缓存(例如,类似图3的缓存)中的任一地理坐标因此被缩短到指定数目的小数位,并且在它存储在缓存中之前被散列化(hash)。当获得新的地理坐标(即,如图2的步骤202中所述)时,其也被缩短到相同数目的小数位并且被散列化。如果存在新的地理坐标与任一缓存的地理坐标的散列之间的匹配,则假定存在缓存命中。因此,与缓存的地理坐标相关联的位置被假定为与新的地理坐标Q相关联的位置相同。如果在缓存中没有找到这种匹配,则假定存在缓存未中并且服务器呼叫是必需的。
应该理解,缓存命中确定过程不局限于如上所述的技术。可以使用任一已知空间索引、算法和/或方案来结构化缓存106和/或确定是否已经发生缓存命中。在一些实施例中,例如,缓存命中确定和/或邻近域涉及R树分割、k-D树、四叉树或任一其他合适的树或结构。
在一些情形中,可能对于特定地理坐标存在多于一个缓存命中。例如,新的地理坐标可能落在多于一个凸包或多于一个通过从缓存的地理坐标延伸的半径定义的圆之内。在该情形中,可以使用任一合适的算法或决策过程以选择哪个邻近域和哪个位置应该与新的地理坐标相关联。在一些实施例中,例如,基于距离度量或邻近来选择邻近域或关联的位置(即,如果新的地理坐标落在分别通过缓存的地理坐标A和B定义的半径r的两个圆之内,则新的地理坐标被假定为关联于与更近的地理坐标相同的位置)。
应该注意到,在一些实施例中,邻近域(例如,包、圆,地理坐标范围、其他合适的缓存命中确定算法或结构等等)被生成和/或定义在移动设备中,而不是在逆地理编码服务器或另一外部设备中。这提供若干优点。之一,移动设备可以动态地重新定义用于缓存命中确定的基础,而不需要来自另一设备的输入。额外地,诸如服务器的外部设备不需要向移动设备发送邻近域。
返回到图4,一旦(多个)邻近域被生成和分析,则做出关于地理坐标(即,在图2的步骤202中获得的地理坐标)是否在邻近域之一之内的确定(步骤408)。倘若如此,则存在缓存命中,并且假定获得的地理坐标与关联于相应的邻近域的位置相同的位置相关联。在这种情况下,该方法继续到图2的步骤206(步骤410)。如果不存在缓存命中,则该方法继续到图2的步骤210,以使得服务器请求可以被发送以获得位置信息(步骤412)。
接下来参照图8,将描述使用用于跟踪应用的位置缓存的示例方法800。最初,在步骤802中,移动设备102检测到用户正在运行位置跟踪应用。存在各式各样的可能的位置跟踪应用。通常,当采取特定行动时或随着用户正在到处移动,这种应用涉及自动地跟踪设备和它的用户。这些应用中的一些包括但是不局限于生活日志应用、旅游应用和地理围栏应用。
在步骤804中,获得地理坐标。这通常用和图2的步骤202一样的方式来执行。通常,这个地理坐标反映或表示移动设备的当前位置。地理坐标的获得的定时取决于应用的本质。例如,生活日志应用是以照片、视频、文本和音频的形式存储条目的应用。这些条目随时间有效地形成数字日记。每个条目一般地被自动地注明日期。此外,在应用中完成或保存一条目之后,移动设备102然后自动地获得地理坐标(步骤804),以使得该条目被创建的位置也可以被存储并与该条目相关联。例如,如果在获得地理坐标37.390601,-121.934751的时候录入日志条目,则生活日志应用将该日志条目标记为在SanJose,California做出。
在一些旅游应用中,应用被布置为当用户的设备到达特定位置、城市或地标时通知他或她。当设备102到达特定位置时,应用可以给出位置的音频导览或描述位置的特征。因此,这种应用可以频繁并定期地尝试获得地理坐标(步骤804),以便确保用户的位置被充分了解并且从而不错过描述或解释特定位置的著名特征的机会。类似的功能可用在用于盲人的一些音频向导上,其跟踪盲人用户的移动并且取决于用户处于什么位置(例如,地址、人行横道、街道拐角、建筑物、等等)而给出音频指令。
地理围栏(geofencingapplication)应用也可以利用上述的技术。地理围栏应用一般需要用户定义用于消息或通知的条件。例如,用户可以将该应用配置为当他到达Cupertino,California的超级市场时告诉他买牛奶。在用户将所述条件和通知输入到该应用中之后,该应用频繁并自动地获得地理坐标(步骤804)以确定用户处于超级市场还是另一位置处。一旦该应用确定用户处于指定位置(例如,超级市场),则该应用向用户通知期望的提醒(例如,买牛奶)。
一旦获得地理坐标,取决于是否存在缓存命中(步骤806),视情况执行图2的步骤204,206,208、210、212、214和216。如果存在对于地理坐标的缓存命中,则可以从缓存106提取位置。如果存在缓存未中,则从服务器104检索该位置(步骤808)。以后,该应用如上所述使用该位置(步骤810)。例如,旅游应用或用于盲人的行程向导应用可以向用户通知已经到达特定位置。如果图2的方法200确定地理围栏应用的用户已经到达指定位置,则该应用将向用户通知(例如,通过音频信号和/或显示的消息)用户早先已经提供给该应用的消息。
接下来参照图9,将描述使用用于照片应用的位置缓存的示例方法900。最初,在步骤902中,移动设备确定设备的用户正在运行基于位置的照片应用。
各种照片应用已经访问存储在移动设备102中或在移动设备102已经访问的远程服务器104上的多张照片。每张照片可以以任一合适的文件格式来存储(例如,TIFF或JPEG)。每个照片文件一般还包含包括地理坐标(例如,纬度-经度坐标对)的元数据,其表示照片被拍摄的地点。然而,地理坐标的进一步分析或转换被需要以确定那些坐标指代哪个城市、地标、建筑物或其他位置。一旦这些位置被识别,则可以按位置来排列照片。例如,用户可以容易地和自动地将在一个城市中拍摄的全部照片放置在一个文件夹中,而将在另一城市拍摄的全部照片放置在另一文件夹中。
当用户启动照片应用和/或激活按照位置分类照片的特征时,移动设备102上的应用自动地获得用于照片的地理坐标(步骤904)。以后,基于用于照片的地理坐标将位置与每个照片相关联。使用图2的方法200的步骤(步骤906)来确定位置。即,对于每个照片地理坐标,缓存命中确定被做出并且因此执行图2的步骤206、208、210、214和216以确定与照片地理坐标相关联的位置。取决于是否存在缓存命中,可能不得不使用服务器呼叫来对地理坐标进行逆地理编码。在实现方法200之后,对于每个照片应当知道位置(步骤908)。以后,基于位置将位置组织成组(步骤910)。
图10中示出示例实现。图10是用于照片应用的示例用户界面1000,其显示在移动设备102的屏幕上。用户界面1000显示步骤910的执行的结果。在这示例中,按照城市来组织照片。更具体地,顶行的照片全部与处于PaloAlto,California的邻近域中的照片地理坐标相关联。即,顶行的照片全部在PaloAlto处拍摄。类似地,在中间行和底部行中的照片分别在Stanford,California和SanJose,California拍摄。
接下来参照图11,将描述根据本发明另一实施例的、用于获得多个位置的方法1100。即,移动设备102和/或服务器104推荐额外的地理坐标和/或位置。额外的位置可以存储在位置缓存中,并且可以使用上述的缓存命中确定和逆地理编码技术来操纵额外的地理坐标。
最初,在移动设备处获得地理坐标(步骤1102)。这个步骤可以与图2的步骤202相同或类似。例如,用户可能在使用移动设备中的位置跟踪或旅游应用,如先前结合图8讨论的。在此示例中,移动设备102上的应用自动地获得地理坐标以确定用户的当前位置。
在一些应用中,期望基于当前位置和/或多种的其他因素自动地获得一个或多个额外的地理坐标。即,移动设备102推荐除了表示移动设备的当前位置之外的额外的地理坐标(步骤1104)。推荐的地理坐标的选择可以基于多种因素,包括但不限于:存储在移动设备上的用户简档,用户兴趣,过去通过移动设备获得的地理坐标或过去通过其他设备获得的地理坐标,或存储在移动设备102中的任一数据。
考虑用户正在访问并运行移动设备102上的旅游应用的示例。旅游应用从GPS卫星获得数据并且获得反映移动设备的当前位置的地理坐标。该应用然后分析存储在移动设备上的数据(例如,用户简档,用户活动历史,从其他设备或服务器接收到的数据等等),并且确定在过去用户访问过通过两个其它地理坐标识别出的两个额外的位置或者可能对它们感兴趣。地理坐标表示在用户附近或在用户的预定距离之内的位置。基于这些因素,旅游应用然后推荐这些额外的地理坐标。
一旦移动设备102获得表示它的当前位置的地理坐标以及其他推荐的地理坐标,移动设备102就确定与这些地理坐标相关联的位置。即,移动设备执行图2的方法200的步骤以获得地理坐标的关联位置(步骤1106)。
如先前结合方法200讨论的,可能不存在对于一个或多个地理坐标的缓存命中。在那种情况下,移动设备102向服务器104发送对于该位置的请求。如先前讨论的,服务器104然后利用关联位置做出响应。然而,在一些情况下,服务器响应还将可选地包括服务器推荐的额外的位置。这些推荐的位置基于存储在服务器上的任一合适的数据——包括但不限于:不同移动设备到不同位置的移动的历史以及已知地标的数据库、在移动设备102附近的著名位置、组织或建筑物——来选择。
考虑以上示例,其中用户正在运行移动设备102上的旅游应用。旅游应用从GPS卫星接收数据并且获得表示移动设备的当前位置的地理坐标(即,一对纬度-经度坐标)(步骤1102)。在此示例中,坐标是37.803901,-122.464135。不存在对于此地理坐标的缓存命中,所以旅游应用向服务器发送该地理坐标(步骤1106)。服务器104确定该地理坐标与CrissyField,1199东海岸,SanFrancisco,CA相关联。CrissyField是沿SanFrancisco的北端的受欢迎的步行区。服务器104然后确定是否存在用户可能感兴趣的其他位置。服务器104查阅它的内部数据库并且确定该地理坐标的预定距离之内存在若干著名地点。那些位置是WarmingHutCafe,其是CrissyField附近的受欢迎的咖啡馆,以及金门大桥,其是附近的热门旅游胜地。
服务器104可以以各种方式识别这种推荐的位置。在各种实施例中,例如,服务器104从不同移动设备接收大量的逆地理编码请求。对逆地理编码请求和它们的关联地理坐标的分析可以揭示,例如,许多移动设备和他们的用户在WarmingHutCafe和金门大桥度过相当多的时间。服务器可以利用此数据来做出它的推荐。
在以上示例中,服务器104因此发送与通过移动设备获得的地理坐标相关联的位置(即,CrissyField,1199东海岸,SanFrancisco,CA)。该服务器还向移动设备发送以下内容:
37.808343,-122.470701WarmingHutCafe,983MarineDr,SanFrancisco,CA
11137.819073,-122.478471金门大桥,SanFrancisco
除了以上内容,在各种实施例中,服务器发送与位置相关联的额外信息,例如,WarmingHutCafe、金门大桥和/或CrissyField的简短描述、照片和/或著名特征的列表。
移动设备102然后接收通过服务器推荐的一个或多个位置(步骤1110)。移动设备102将从服务器接收到的位置存储在缓存106中。如果移动设备接收到额外的补充信息(例如,描述、照片等等),则此数据被存储在存储器中以供稍后使用。
移动设备然后在应用中使用(多个)位置(步骤1112)。在以上示例中,正在运行旅游应用的移动设备102然后向用户通知他或她在CrissyField处。移动设备102基于从服务器接收到的输入进一步推荐附近存在两个额外的感兴趣的位置,包括WarmingHutCafe和金门大桥。例如,这些通知和推荐可以通过在移动设备102的屏幕上显示提醒或说明文本来传达。此外,如果用户到达WarmingHutCafe,则对于当前位置的任一逆地理编码请求现在可以从缓存被检索,而不需要服务器呼叫。
接下来参照图12,将描述根据本发明特定实施例的、用于预传播位置缓存的方法。在示出的实施例中,服务器104执行方法1200以对移动设备102上的缓存进行预传播。然而,可以代替服务器104使用能够向移动设备102发送数据的任一合适的设备。
在一些环境下,期望对移动设备102上的位置缓存进行预传播。即,利用未被移动设备102特别地请求或获得的条目、位置和/或地理坐标来预填充位置缓存。在许多上述的示例中,由移动设备102获得的地理坐标反映移动设备102的当前位置和过去位置。因此,位置缓存充满着反映移动设备102的过去移动的数据。
然而,在一些情况下,利用不反映移动设备102的过去活动或位置的数据来填充缓存是有用的。例如,从来没有使用过的新获取的移动设备可以具有空缓存。结果,随着移动设备在不同位置之间移动,获得地理坐标并且做出逆地理编码请求,没有或很少的缓存命中将发生而且将不得不做出许多服务器呼叫。这在带宽和电池使用方面可能花费较大。在这样的情况下,向缓存预传播相关位置数据能够在降低的网络延时和电力消耗方面提供显著的好处。
最初,在步骤1202处,服务器104从移动设备102接收指示它的状态的数据(步骤1202)。数据可以采用多种形式。在一些实施例中,例如,移动设备102向服务器104发送指示缓存为空或几乎为空并且应该被填充的信号。一些实现允许用户配置移动设备102的设置以使得仅在选定条件下发生预传播。举例来说,用户可以将设置配置为指示预传播应当仅在存在Wi-Fi连接时,在一天的特定时间期间和/或当移动设备102的电池正在充电时发生。此外,用户可以将设置配置为指示,仅将特定量的存储器用于预传播,或预传播应该仅涉及设备的当前位置的特定预定距离之内的区域。此外或者可替代地,移动设备102向服务器发送指示它的当前位置的地理坐标。有助于服务器进行预传播过程的任一其他数据(例如,传感器数据、获得的地理坐标的历史等等)还可以在此阶段从移动设备102发送到服务器104。
基于接收到的数据,服务器104确定应该向移动设备102预传播位置数据(步骤1204)。在步骤1206中,服务器104预计算或选择一个或多个位置。被预计算或选择的位置一般基于从移动设备102接收到的数据。举例来说,如果移动设备已经提供了它的当前位置,则服务器可以预计算或选择邻近移动设备102或在移动设备102的预定距离之内的多个位置。
可以以多种方式对位置进行选择或预计算。在一些实施例中,例如,服务器104预计算覆盖靠近移动设备102的当前位置的地区的多个相邻的正方形区域。举例来说,这样的区域可以具有结合图7描述的正方形的特征中的任何一个。即,正方形区域能够通过(散列化的)纬度-经度坐标来表示,该(散列化的)纬度-经度坐标的精度和小数位的数目已经基于正方形区域的预定边长来限制。然而,应该理解地是,区域可以以各式各样的方式被预计算和配置并且不局限于如上所述的正方形设计。
在图13A-图13C中描述生成区域的一个示例方法。图13A-图13C指示在预计算多个区域中的各种步骤。在此示例中,服务器104从移动设备102接收指示移动设备102的当前位置1302的地理坐标(步骤1202)。如图13A指示的,服务器104确定在移动设备102的当前位置1302的附近存在一个或多个行政区域(例如,城市、县、区、区域省(regionprovince)等等)。在示出的实施例中,移动设备102被确定为靠近在图13A中标记的A市、B市和C市这三个城市。
如图13B中所示,服务器104然后预计算区域(例如,具有预定长度的正方形,如图7中讨论的)。正方形中的一些跨越两个行政区域(例如,市),而其他正方形(标记为图13C的A、B和C的正方形)全部包含在单个区域之内。在各种实现中,服务器104向移动设备102发送仅指示后者的正方形的数据,以用于存储在缓存106中。
用于确定预传播位置数据的另一方法示出在图14中。在图14中,移动设备102正在沿方向1403移动。移动设备102向服务器104发送数据,该数据指示此方向1403、它的当前位置(例如,图12的步骤1202)和/或任一其他合适的参数,例如,速度、加速度等等。
基于以上所述数据,服务器104然后基于移动设备102的轨迹或期望路径确定移动设备102的用户会特别感兴趣的各种位置。在此示例中,服务器104基于移动设备102正在移动的方向1403确定移动设备102和它的用户很可能遇见表示附近地区中的著名地标的位置1406和1408。这是因为服务器确定位置1406和位置1408处于通过移动设备102的移动、轨迹和/或方向1403定义的路径1411中。然而,服务器104还确定位置1404和1410将可能不被移动设备用户遇到,因为它们在移动设备102的期望路径1411和轨迹之外。因此,服务器104确定仅指示位置1406和1408的数据将稍后被发送给移动设备102。
用于确定预传播位置数据的另一方法涉及分析或预测移动设备用户的偏好或将来的动作。举例来说,如果服务器从移动设备102接收指示设备处于特定位置A的地理坐标,则服务器104或许能够预测移动设备102将可能移动到已知位置B。此预测可以基于各式各样的因素,包括用户简档、过去的用户动作或移动的历史、移动设备上存储的任一数据(例如,日历数据、约会数据、笔记、偏好等等)、其他移动设备用户的动作或移动的历史等等。此外,在各种实现中、用户确定用户将还可能到达位置C,因为C沿着该移动设备将可能穿越以从位置A到位置B的已知路径或轨迹。在此示例中,服务器然后向用户的移动设备的缓存预传播用于位置B和/或位置C的位置数据。
返回到图12,在步骤1208中,服务器向移动设备102发送预计算的区域或选择的位置。如果用户在步骤1202中指定预传播可以发生的条件(例如,仅在晚上,当移动设备正在充电时等等),则仅当那些条件满足时才执行预传播。在图13中示出的示例中,服务器向移动设备102发送标记为A、B和C的区域/正方形(即,每个全部仅在单个行政区域而非多个行政区域之内的区域)。在图14中示出的示例中,服务器发送指示地标1406和1408的地理位置和/或地理位置自身的名称的地理坐标。此被发送数据可以采用多种形式。在一些实施例中,例如,被发送数据与图3中示出的数据类似或相同。即,被发送的数据包括一个或多个条目,每个条目至少包括地理坐标以及地理坐标指向的关联位置的关联的一个或多个名称(例如,地址、组织的名称、城市、行政区域等等)。
在多个实现中,服务器104不发送定义预定义大小的区域以及每个覆盖地理坐标的范围的数据。替代地,服务器104发送每个指代更大地区中的单个点的特定地理坐标(例如,如具有特定纬度-经度坐标对的情况)。然后期望地是,移动设备将至少部分地基于特定地理坐标视情况生成合适的邻近域或区域(例如,包、半径形成的圆等等),以确定是否存在缓存命中。在其他实施例中,服务器预计算区域(例如,图13A-图13C中讨论的区域)并且将它们发送到移动设备102。在步骤1210中,移动设备102从服务器104接收位置数据(即,区域和/或特定点),然后将它们存储在缓存106中。
如果向移动设备102中的缓存106预传播邻近移动设备102的当前位置的区域或位置,则更可能地是,随着移动设备到处移动,任一逆地理编码请求将被该缓存满足并且将不需要服务器呼叫。这有助于降低带宽和电力消耗,即使当移动设备相对较新并且还没有通过它自己的活动装满该缓存时。
接下来参照图15,将描述根据本发明特定实施例的、多个网络设备的系统1500的图。在示出的实施例中,设备中的每一个包括位置缓存(例如,与图1的缓存106类似或相同),其可以与其他设备共享。在一些实现中,设备检查另一设备中的缓存而不是检查它自己的缓存。结果,设备不需要限于它自己的缓存的内容,而是可以访问和使用从其他设备获得的缓存的位置数据。
网络设备包括移动设备1502、1504和1506。每个设备可以是任一合适的计算设备,包括但不限于膝上型计算机、智能电话、智能眼镜、智能手表、计算机等等。在各种实施例中,设备中的每一个具有图1的移动设备102的任一或所有特征。
三个设备能够使用任一合适的网络1508彼此通信。在此示例中,网络一般是使用任一合适的通信协议的短程网络,包括但不限于蓝牙、蓝牙LE、WiFi和/或NFC。该网络能够用于交换或访问缓存数据,如下面将更详细描述的。
接下来参照图16,将描述用于在设备之间通过短程网络1508交换或传递缓存数据的方法1600。最初,在步骤1602中,移动设备1502获得许可以从移动设备1504获取缓存数据。
用于获得许可的过程可以取决于设备和网络1508而变化。在一个特定实现中,移动设备1502使用短程网络1508,诸如蓝牙、蓝牙LE或NFC,以与移动设备1504通信。移动设备1502的用户向设备提供输入,其使得它向移动设备1504发送对于缓存访问的请求。该请求被移动设备1504接收。在各种实施例中,响应于该请求,在移动设备1504的屏幕上显示通知。移动设备1504的用户然后能够向移动设备1504提供指示对于访问的请求被批准的输入。可替代地,用户可以向移动设备1504提供指示对于访问的请求未被接受的输入,在这种情况下在移动设备之间的数据传送被阻止和/或在两个设备之间的网络连接被切断。
在一些实现中,为了将数据从一个缓存传送到另一缓存,移动设备1502可选地必须检测移动设备1504的物理邻近(步骤1604)。举例来说,在使用NFC或任一其他合适的短程网络协议的各种实现中,移动设备1502的用户将他的或她的设备放置为非常接近或物理接触移动设备1504(例如,将两个智能电话或移动设备的背面放置相互紧靠)。可选地,移动设备1502的用户还向移动设备1502提供使得移动设备1502请求访问移动设备1504的缓存的输入。移动设备1504的用户然后接收指示该请求的提醒(例如,显示在屏幕上的通知),并且可以通过向移动设备1504提供输入来确认该请求。在各种设计中,缓存数据不能在两个设备之间传送直到在两个设备之间建立了物理接触。
一旦已经获得必要的许可,移动设备1502从移动设备1504的缓存接收位置数据(步骤1606)。在各种实施例中,传送的数据一般具有与图3中描述的缓存内容相同的形式和排列。即,传送的数据可以包括多个条目,其中每个条目包括地理坐标以及一个或多个关联的地理位置或位置的名称。移动设备1502通过网络1508接收数据并且将数据存储在它自己的缓存106中。在一些实施例中,数据传送是双向的。即,在相同时间或大约相同时间,来自移动设备1502的缓存数据被传送到移动设备1504。可替代地,数据传送可以代之以是单向的并且沿相反方向(即,缓存数据可以从移动设备1504发送到移动设备1502)。
在步骤1608中,移动设备1502使用新接收到的缓存数据执行图2的方法200的步骤。即,在从移动设备1504检索缓存数据之后,移动设备1502的缓存106现在包括与更宽泛的位置有关的数据。举例来说,如果移动设备1502的用户没有在SanFrancisco花费任何时间,但是移动设备1504的用户在SanFrancisco使用旅游应用花费相当多的时间,则移动设备1502的用户现在可以基于在他或她的缓存中的位置来访问SanFrancisco。即,如果移动设备1502的用户访问SanFrancisco,则他或她的移动设备1502可以做出对于获得的地理坐标的逆地理编码请求(例如,图2的步骤202)。对于该请求的响应现在可以在本地从使用从移动设备1504传送的缓存数据的缓存接收。如果缓存数据传送还没有发生,则这样的请求可能替代地需要服务器呼叫,其消耗额外的带宽和电池电力。
接下来参照图17,将描述用于使用共享偏好来共享缓存数据的示例方法。可以在图15的系统中执行该方法。此示例方法涉及在移动设备中预置共享偏好以使得缓存数据可以跨越移动设备被自动地共享。
最初,在步骤1702中,移动设备1502接收指示共享偏好的用户输入。此输入可以使用显示在移动设备1502中的用户界面、音频命令或任一其他形式的输入被录入。用户输入指示用户愿意与系统中一个或其他选定移动设备共享移动设备上的位置缓存。
共享偏好可以以多种方式被配置。在一些实施例中,例如,移动设备1502、1504和1506的用户向他们的移动设备提供指定将允许与其共享的选定设备或帐户的输入。在一些实施例中,用户还向该设备提供指示缓存数据是否可以从该设备被发送的输入,或者两者。此外,用户可以指示通过其共享将被允许的通信网络的类型(例如,WiFi,蓝牙等等),以及任一共享将发生的条件(例如,当充电的时候、夜晚、在白天的特定时间,当WiFi被启动时等等)。
移动设备1502然后检测以上共享条件是否满足。移动设备1504也是这样做。如果全部条件都被满足并且移动设备1502和1504的共享偏好匹配,则移动设备基于他们的共享偏好自动地共享他们的位置缓存的一些或所有内容(步骤1704)。例如,移动设备1502可以已经被配置为从移动设备1504接受缓存数据并且向移动设备1504发送缓存数据,而移动设备1504被配置为向移动设备1502发送缓存数据但是不从移动设备1502接受缓存数据。两个移动设备都被设置为仅当充电时并且当这些设备连接在相同的WiFi网络中时共享。因此,当这些条件满足时,移动设备1502将从移动设备1504自动地接收缓存数据,但是将不向移动设备1504发送缓存数据,因为移动设备1504禁止接受外部的缓存数据。
在一些实施例中,缓存数据基于移动设备用户的兴趣在移动设备之间自动地共享或传送。举例来说,如果对在移动设备上存储的数据的分析指示用户具有共同兴趣或可能访问类似地点,则在两个移动设备的缓存之间的共享可以被允许。考虑移动设备1502和1504两个的用户都对冲浪和海滩感兴趣的示例。这个兴趣可以反映在存储在他们的移动设备上的数据(例如,用户简档、用户历史、设备的移动历史、日历、偏好设置、事件、移动设备的当前和过去位置等等)中。在各种实现中,运行在两个设备上的应用或服务基于以上因素确定共享缓存数据将是有益的,因为用户将很可能访问相同位置并且对相同位置感兴趣(例如,海滩、冲浪场地、冲浪商店等等)和/或因为他们的设备位于彼此的预定距离之内。因此,移动设备1502从移动设备1504的缓存接收缓存数据。
一旦移动设备1502从移动设备1504接收新的缓存数据,则移动设备1502执行图2的方法200(步骤1706)。即,移动设备1502由于从移动设备1504接收缓存数据而能够访问它的缓存中的更宽泛的位置。例如,相对于这种位置做出逆地理编码服务器请求的需要可以而被降低。这个步骤通常与图16的步骤1608类似或相同。
接下来参照图18,将描述用于通过网络选择和访问缓存的方法1800。可以在图15中示出的系统1500中执行图18的方法1800。为了这个示例的目的,系统中的每个设备包括单独的位置缓存并且可以是任一类型的计算设备,包括但不限于计算机、移动设备、智能手表、智能眼镜、膝上型计算机、平板电脑等等。每个设备可以具有图1的移动设备102的特征中的任何一个。
最初、在步骤1802中,设备1502获得地理坐标。步骤1802可以与图2的步骤202类似或相同。在步骤1804中,设备1502通过网络1508检测一个或多个其他设备(例如,设备1504和1506)。设备可以使用任一合适的网络或通信协议连接,诸如互联网、WiFi、蓝牙等等。
在步骤1806中,设备1502确定它自己的缓存或另一设备的缓存是否将被检查。即,为了识别与获得的地理坐标相关联的位置,设备将做出缓存命中确定(例如,如结合图2的方法200描述的)。在选定条件下,可以期望设备1502利用另一设备的缓存,而不是它自己的缓存,以用于缓存命中确定和/或用于其他缓存有关的操作(例如,向服务器做出逆地理编码请求,存储逆地理编码结果等等)。
关于是否使用另一设备的缓存的确定可以基于各式各样的因素。在一些实施例中,例如,该确定基于在设备1502/1504/1506中的任何一个中剩余的电池电力,在这些设备中的任何一个上可用的存储器,预期被存储在缓存中的数据量,可用于从服务器接收位置数据的带宽量和/或用于在设备中的任何一个上执行缓存的处理速度或能力。通常,如果移动设备1502中的可用资源(例如,电池电力、存储器、带宽、处理能力等等)较低,但是在另一设备中较大,则有时可以期望移动设备1502使用其他设备的缓存来执行它的缓存命中确定和/或逆地理编码操作(例如,图2的方法200)。
如果设备1502确定将在设备1502而非在另一设备中执行位置有关和缓存有关的操作,则设备1502使用获得的地理坐标执行图2的方法200(步骤1808)。即,设备1502使用它自己的资源、缓存和存储器来执行缓存命中确定及其他缓存有关的操作。
如果设备1502确定另一设备将执行那些操作,则设备1502通过网络1508向其他设备传送指示这个确定的数据。在一些实施例中,移动设备1502还向其他设备发送获得的地理坐标,不过地理坐标的获得也可以代之以在远程设备中执行。考虑其中设备1502是具有渐少的电池电力的智能电话并且设备1506是具有更大带宽、处理能力和电池电力的膝上型计算机的示例。基于这些因素,设备1502向膝上型计算机传送指示缓存命中确定将在膝上型计算机中执行的数据并且获得地理坐标。膝上型计算机然后使用它的缓存和获得的地理坐标执行缓存命中确定(例如,图2的步骤204和206)(步骤1810)。在一些实施例中和/或取决于设备1502的偏好,膝上型计算机还可以视情况来执行逆地理编码服务器呼叫(例如,如在图2的步骤210和212中描述的)。膝上型计算机然后获得与获得的地理坐标相关联的一个或多个位置(例如,如在图2的步骤206和212中描述的)。然后,移动设备1502从膝上型计算机接收位置和/或在合适的应用(例如,旅游应用,生活日志应用等等)中使用它们。
在各种实施例中,在以上操作被执行并且外部缓存数据被访问之前,在这些操作中涉及的(多个)设备必须给与允许这种访问的许可。例如,膝上型计算机的用户可以向膝上型计算机提供指示哪些设备或帐户(例如,设备1502)可以访问和/或控制它的缓存的输入。这些许可然后通过网络1508被发送给设备1502。一旦设备1502确认这种许可已被给出,则它可以然后进行到膝上型计算机的缓存的访问。可以以任一合适的方式提供该许可,包括使用分别结合图16和图17的步骤1602和1702讨论的任一方法。
接下来参照图19,将描述根据本发明的特定实施例的移动设备102。移动设备102可以是各式各样的设备,包括但不限于智能电话、平板电脑、智能眼镜、智能手表、膝上型计算机或任一其他合适的计算设备。示出的移动设备102可以是图1的移动设备102。移动设备102包括存储单元1902、处理器单元1904、用户接口单元1906、位置确定模块1908、缓存106和网络接口单元1912。
存储单元1902是适合于存储数据的任一机制或设备。例如,存储单元1902可以包括易失性存储器、非易失性存储器、快闪存储器、硬驱和/或任一合适的计算机可读存储介质。在各种实施例中,存储单元1902存储可以通过处理器单元1904读取和运行的计算机软件、操作系统和/或计算机可读代码。
处理器单元1904包括一个或多个处理器。处理器单元1904被安排为执行存储在存储单元702中的计算机可执行代码。代码的执行可以致使移动设备102执行在此应用中描述的用于移动设备102的操作中的任何一个。例如,当运行时,存储单元中的代码可以致使移动设备102执行在图2的方法200中描述的步骤中的任何一个。
网络接口单元1912是被布置以将移动设备102连接到外部网络的一个或多个模块、天线或其他机制。在各种实施例中,网络接口单元1912被布置为连接到任一合适的无线、有线和/或蜂窝网络(例如,蓝牙、蓝牙LE、Wi-Fi、GSM、NFC、CDMA等等)。例如,移动设备102被布置为通过网络接口单元1912向图2的服务器104发送数据。移动设备102还通过网络接口单元1912从其他设备或服务器接收位置数据。
用户接口单元1906是用于帮助用户与移动设备102交互的任一软件和/或硬件。可以使用任一合适的接口技术。在一些实施例中,例如,用户接口单元1906包括计算机显示屏幕、触敏(例如,电容)屏幕、电子墨水显示器、被布置为接收音频命令的麦克风、键盘、一个或多个开关或按钮、麦克风等等。在各种实施例中,用户接口单元1906被布置为显示结合图10描述的图形用户界面。用户接口单元还被布置为显示允许用户输入用于共享缓存数据的用户偏好和许可的输入的用户界面(例如,如结合图16和图17描述的)。
缓存106是用于存储位置数据、地理坐标数据和/或帮助移动设备确定与特定地理坐标相关联的位置的任一数据的软件或硬件。在一些实施例中,缓存如图3中所述那样存储数据,例如,使用多个条目,其中每个条目将地理坐标与一个或多个地址或地标、组织、实体、城市、州、省、区、行政区域或其他位置的名称相关联。可以使用任一已知缓存算法以在缓存中访问、除去和添加数据。
位置确定模块1908是被布置为帮助确定与特定地理坐标相关联的位置的任一软件或硬件。在各种实施例中,例如,位置确定模块1908获得地理坐标(例如,图2的步骤202)和访问缓存以确定是否存在缓存命中(图2的步骤204)。位置确定模块1908还被安排为管理与服务器104的通信,以使得新的位置数据可以视情况而被接收并且存储在缓存106中。在各种实现中,位置确定模块1908的功能中的一些或全部通过移动设备102上存储的一个或多个移动应用或程序来实现。
接下来参照图20,将描述根据本发明的特定实施例的服务器104。服务器104可以是图1的服务器104。服务器104包括网络接口单元2012、处理器单元2004、存储单元2002、预传播模块2008以及逆地理编码模块2006。
存储单元2002是适合于存储数据的任一机制或设备。例如,存储单元2002可以包括易失性存储器、非易失性存储器、快闪存储器、硬驱和/或任一合适的计算机可读存储介质。在各种实施例中,存储单元2002存储可以通过处理器单元读取和运行的计算机软件和/或计算机可读代码。
处理器单元2004包括一个或多个处理器。处理器单元2004被安排为运行存储在存储单元2002中的计算机可执行代码。代码的执行可以致使服务器104执行在此应用中描述的服务器操作中的任何一个。例如,当运行时,存储单元中的代码可以致使服务器104执行结合图2的方法200、或图12的方法1200描述的服务器操作中的任何一个。
网络接口单元2012是被安排为帮助将服务器104连接到网络的任一硬件或软件。在各种实施例中,网络接口单元2012帮助将服务器104连接到任一合适的有线或无线网络(例如,互联网)。服务器104被布置为通过网络接口单元2012从移动设备102接收地理坐标或逆地理编码请求。服务器还被布置为通过网络接口单元2012向设备(例如,图1的移动设备102)发送数据(例如,用于存储在缓存中的位置数据)。
逆地理编码模块2006是被布置为从移动设备102接收地理坐标并且确定地理坐标指代或指向的一个或多个位置的任一软件或硬件。例如,如果位置确定模块接收纬度-经度坐标37.394403,-121.946181,则位置确定模块被布置为查阅映射工具、数据库或任一其他合适的资源以确定坐标指向并且关联于3932RivermarkPlaza,SantaClara,CA处的Peete’sCoffee(咖啡店)。逆地理编码模块2006被布置以执行图2的方法200的服务器侧操作(例如,从移动设备102接收地理坐标,将地理坐标与一个或多个位置关联,和/或向移动设备发送一个或多个位置)。
预传播模块2008是任一软件或硬件,被布置为向移动设备的缓存提供位置数据,即使当该位置数据尚未被移动设备特别请求时。预传播模块2008被布置为执行结合图12、图13A-13C和图14描述的方法和操作中的任何一个。例如,预传播模块2008被布置为确定何时以及是否缓存数据将被发送给移动设备(例如,图12的步骤1202)。将被发送给移动设备的推荐位置的预计算和/或选择也可以通过预传播模块执行(例如,图12的步骤1204和1206)。
应该注意到,在此应用中描述的任一位置缓存(例如,图1的缓存106)可以是应用特定的或者是移动设备102上的多个应用可访问的。即,在一些实施例中,缓存106是特定计算机程序或移动应用的一部分或专用于该特定计算机程序或移动应用。没有其它应用可以访问或使用该缓存。只有关联的计算机程序可以检查该缓存、使用该缓存执行缓存命中确定和/或在该缓存中存储逆地理编码结果。然而,在其他实施例中,共享缓存106被多个不同应用访问和使用。在各种实现中,共享的缓存106被内置到移动设备106的操作系统中。多个不同应用可以使用共享的缓存106执行缓存命中确定并且可以在共享的缓存106中存储逆地理编码结果。
此应用有时指代从服务器104向移动设备102发送位置或位置数据。例如,这可以当服务器104对逆地理编码请求做出响应时发生。它也在服务器104向移动设备102发送推荐的位置时(例如,如结合图11讨论的)和/或当服务器104预传播移动设备102的缓存时(例如,图12的方法1200)发生。将理解地是,此位置或位置数据可以涉及各种不同类型的数据。在一些实施例中,例如,这种位置或位置数据可以包括以下各项中的一个或多个:街道地址、城市名称、邮政编码、州名称、任一政府或行政区域的名称(例如,省、区、城区、县等等)、地标的名称、企业的名称、组织的名称、位置的名称和事件的名称。仍在其他实施例中,位置数据具有图3中描述的数据的特征中的任何一个,或任一其他已知格式或结构。
此应用指代由服务器和(移动)设备执行的各种操作。将理解地是,服务器和设备可以在不同实现中执行各式各样的不同类型的操作。在一些实现中,例如,服务器不生成邻近域、边界区域和/或任一其他类型的缓存命中确定机制,也不从服务器向设备发送这个机制。一些实施例涉及使用邻近域、边界区域或本地生成而非在远程服务器处生成的其他缓存命中确定机制来执行缓存命中的设备。
虽然已经详细描述了本发明的少数实施例,但是应理解,本发明可以以许多其他形式实现而不脱离本发明的精神或范围。例如,附图包括框图。每个框图指代多种不同部件。应理解,一个部件的特征和功能可以被传送到另一部件,并且部件的数目和他们的排列可以不同于附图中所示。任一部件可以被划分成多个部件,或两个或更多部件可以被组合。此外,该申请的附图示出具有各种步骤的方法。这些步骤可以被修改或重新安排。在一些实施例中,视情况而定,特定步骤被除去或新的步骤被添加。因此,本实施例将被认为是例示性的,而非限制性的,并且本发明不限于本文给出的细节。
Claims (25)
1.一种用于确定设备的位置的方法,包括:
使用设备的传感器检测设备的地理坐标;
如果地理坐标匹配存储在设备上的已经访问过的地理坐标,则基于所述已经访问过的地理坐标获得设备的位置;以及
使用设备的位置执行功能。
2.如权利要求1所述的方法,还包括:
如果地理坐标不匹配存储在设备上的已经访问过的地理坐标,则向服务器发送对于与地理坐标相关联的位置的请求;
从服务器接收指示位置的响应;以及
将从服务器接收到的位置存储在缓存中。
3.如权利要求1所述的方法,还包括:
在所述设备中生成一个或多个邻近域,每个邻近域与不同位置相关联;以及
通过确定地理坐标是否在所述邻近域中的一个之内,来确定该地理坐标是否匹配存储在所述设备上的已经访问过的地理坐标。
4.如权利要求3所述的方法,其中:
所述一个或多个邻近域在所述设备中而非在另一外部设备中被生成。
5.如权利要求3所述的方法,其中:
所述缓存存储在所述设备中先前获得的多个地理坐标;以及
每个邻近域至少部分地基于存储在缓存中的地理坐标中的至少一个。
6.如权利要求3所述的方法,其中所述邻近域的生成涉及从由凸包、凹包、半径形成的圆、被缓存的地理坐标的预定距离之内的地理坐标、获得的地理坐标的预定距离之内的地理坐标、隐式正方形散列、R树分割、空间索引以及至少部分地通过被缓存点定义的预定区域组成的组中选择至少一个。
7.如权利要求1所述的方法,所述设备是第一设备,所述方法还包括:
获得用于从使用短程网络连接到第一设备的第二设备的缓存获取缓存数据的许可;
从第二设备获得缓存数据;
在第一设备的缓存中存储获得的缓存数据;以及
使用获得的缓存数据执行位置的获得。
8.如权利要求1所述的方法,所述设备是第一设备,所述方法还包括:
通过网络检测第二设备,所述第二设备具有用于存储位置数据的缓存;
在第一设备中基于从由可用带宽、可用电池电力、可用处理能力、预期存储在缓存中的数据量以及可用存储器存储量组成的组中选择的至少一个,确定第一设备是否将访问第二设备的缓存;以及
当确定第一设备将不访问第二设备的缓存时,在本地从第一设备的缓存获得与地理坐标相关联的位置;以及
当确定第一设备将访问第二设备的缓存时,从第二设备的缓存接收位置并且将该位置存储在第一设备上的缓存中。
9.如权利要求1所述的方法,还包括:
在服务器处从设备接收状态数据;
在服务器处确定将向所述设备预传播位置数据;
从服务器向所述设备发送位置数据;
在所述设备中的缓存中存储位置数据;以及
至少部分地基于从服务器接收到的位置数据获得位置。
10.如权利要求9所述的方法,还包括:
确定设备正在沿特定方向移动;
基于确定的移动和方向,选择位于所述设备的预期路径上的一个或多个位置;以及
向所述设备发送所述一个或多个位置以存储在缓存中。
11.如权利要求9所述的方法,还包括:
预计算每个覆盖所述设备的预定距离之内的行政区域的一个或多个区域;以及
向所述设备发送所述一个或多个区域以存储在缓存中。
12.如权利要求1所述的方法,还包括:
确定不存在缓存命中;
从所述设备向服务器发送对于与地理坐标相关联的位置的请求;
在服务器中确定与地理坐标相关联的第一位置;
基于从由第一位置到第二位置的邻近、用户简档、用户设置、设备的过去位置、用户提供的兴趣以及来自其他设备的逆地理编码请求组成的组中选择的至少一个,推荐第二位置;
从服务器向所述设备发送指示第一位置和第二位置的数据;以及
在所述设备上的缓存中存储第一位置和第二位置。
13.如权利要求1所述的方法,还包括:
基于当前位置以及从由用户历史、用户简档、用户设置、设备的过去位置和由用户提供的兴趣组成的组中选择的至少一个,来推荐一个或多个其他地理坐标;
确定多个地理坐标中的每个地理坐标是否匹配存储在所述设备上的已经访问过的位置,所述多个地理坐标包括获得的地理坐标和所述一个或多个推荐的地理坐标;
当所述多个地理坐标中的特定一个匹配存储在所述设备上的已经访问过的位置时,执行从缓存获得位置;以及
当所述多个地理坐标中的特定一个不匹配存储在所述设备上的已经访问过的位置时,向服务器发送对于位置的请求并且从服务器接收位置。
14.如权利要求1所述的方法,其中使用所述设备的位置执行功能包括:
确定用户正在运行从由旅游应用和用于引导盲人的应用组成的组中选择的应用;以及
生成向用户通知位置的音频消息。
15.如权利要求1所述的方法,其中使用所述设备的位置执行功能包括:
确定用户正在运行生活日志应用;
从用户接收指示期望新的日志条目的输入;以及
将日志条目与位置相关联。
16.如权利要求1所述的方法,其中使用所述设备的位置执行功能包括:
确定所述设备的用户正在运行所述设备上的地理围栏应用;
从所述用户接收指示当用户处于特定目标位置时期望提醒的输入;以及
当位置匹配由所述用户指定的目标位置时,向所述用户通知该提醒。
17.如权利要求1所述的方法,其中使用所述设备的位置执行功能包括:
确定所述设备的用户已经启动了设备中的照片应用;
自动地获得用于每个照片的地理坐标,其中地理坐标帮助识别照片是在哪里被拍摄的;以及
基于从服务器或缓存接收到的位置将照片组织到不同组中。
18.如权利要求1所述的方法,还包括:
从用户接收指示获得的位置不正确并且应该被校正的输入;以及
基于用户输入校正该位置并且将校正的位置存储在缓存中。
19.如权利要求1所述的方法,其中:
缓存包括多个缓存条目;以及
每个条目包括指示指代地理坐标系统中的特定点的地理坐标以及与该地理坐标相关联的一个或多个位置的数据。
20.一种包括具体实现为有形的形式的可操作以确定设备的位置的可执行计算机代码的计算机可读存储介质,其中所述计算机可读存储介质包括:
可操作以使用设备的传感器来检测设备的地理坐标的可执行的计算机代码;
可操作以在地理坐标匹配存储在设备上的已经访问过的地理坐标时基于已经访问过的地理坐标获得设备的位置的可执行的计算机代码;以及
可操作以使用设备的位置执行功能的可执行的计算机代码。
21.如权利要求20所述的计算机可读存储介质,其中所述计算机可读存储介质还包括:
可操作以在地理坐标不匹配存储在设备上的已经访问过的地理坐标时向服务器发送对于与地理坐标相关联的位置的请求的可运行的计算机代码;
可操作以从服务器接收指示位置的响应的可执行的计算机代码;以及
可操作以将从服务器接收的位置存储在缓存中的可执行的计算机代码。
22.一种设备,包括:
至少一个处理器;
至少一个存储器,包括包含以有形形式存储的计算机代码的计算机可读存储介质,其中当由所述至少一个处理器执行时,所述计算机代码使得设备进行如下操作:
使用设备的传感器检测设备的地理坐标;
如果地理坐标匹配存储在设备上的已经访问过的地理坐标,则基于已经访问过的地理坐标获得设备的位置;以及
使用设备的位置执行功能。
23.如权利要求22所述的设备,所述计算机可读存储介质还包含计算机代码,当由所述至少一个处理器执行时,所述计算机代码使得设备进行如下操作:
如果地理坐标不匹配存储在设备上的已经访问过的地理坐标,则向服务器发送对于与地理坐标相关联的位置的请求;
从服务器接收指示位置的响应;以及
将从服务器接收到的位置存储在缓存中。
24.一种设备,包括:
传感器,被配置为检测设备的地理坐标;
存储器件,被配置为存储多个已经访问过的地理坐标;以及
处理器,耦接到传感器和存储器件,被配置为基于设备的地理坐标与所述多个已经访问过的地理坐标中的特定一个的匹配来获得设备的位置。
25.如权利要求24所述的设备,其中所述处理器还被配置为,如果地理坐标不匹配所述多个已经访问过的地理坐标中的任何一个,则向服务器发送对于与地理坐标相关联的位置的请求。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361884893P | 2013-09-30 | 2013-09-30 | |
US14/498,805 US20150094090A1 (en) | 2013-09-30 | 2014-09-26 | Caching of locations on a device |
US14/498,805 | 2014-09-26 | ||
PCT/KR2014/009290 WO2015047059A1 (en) | 2013-09-30 | 2014-10-01 | Caching of locations on a device |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105659637A true CN105659637A (zh) | 2016-06-08 |
Family
ID=52740673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480053964.0A Pending CN105659637A (zh) | 2013-09-30 | 2014-10-01 | 在设备上缓存位置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20150094090A1 (zh) |
EP (1) | EP3053362A1 (zh) |
KR (1) | KR20160086322A (zh) |
CN (1) | CN105659637A (zh) |
WO (1) | WO2015047059A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108337640A (zh) * | 2017-01-17 | 2018-07-27 | 联发科技股份有限公司 | 定位的电子装置与执行电子装置的定位操作的方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11586680B2 (en) * | 2014-03-31 | 2023-02-21 | International Business Machines Corporation | Fast and accurate geomapping |
CN105338492B (zh) * | 2015-11-18 | 2018-07-31 | 南京大学 | 一种基于地理围栏技术的智能电子导游系统 |
KR20170082342A (ko) * | 2016-01-06 | 2017-07-14 | 에스프린팅솔루션 주식회사 | 화상 형성 장치 및 이를 제어하는 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719128A (zh) * | 2009-12-31 | 2010-06-02 | 浙江工业大学 | 一种基于模糊匹配的中文地理编码确定方法 |
US7957749B1 (en) * | 2001-12-20 | 2011-06-07 | Adobe Systems Incorporated | Location-based bookmarks |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101087081B1 (ko) * | 2004-02-06 | 2011-11-25 | 에스케이플래닛 주식회사 | 이동통신망의 단말기 위치 정보 서비스 시스템과 방법 및그 프로그램을 저장한 기록매체 |
US7353034B2 (en) * | 2005-04-04 | 2008-04-01 | X One, Inc. | Location sharing and tracking using mobile phones or other wireless devices |
KR100676625B1 (ko) * | 2005-05-17 | 2007-01-30 | 에스케이 텔레콤주식회사 | 위치 기반 서비스 제공을 위한 단말의 위치관리애플리케이션 제어 시스템 및 방법 |
US20080014964A1 (en) * | 2006-07-12 | 2008-01-17 | Loc-Aid Technologies, Inc. | System and method for generating use statistics for location-based applications |
US8271889B1 (en) * | 2007-11-26 | 2012-09-18 | Adobe Systems Incorporated | Automatically updated user interfaces for a mobile device |
US9128602B2 (en) * | 2009-11-25 | 2015-09-08 | Yahoo! Inc. | Gallery application for content viewing |
US20120254804A1 (en) * | 2010-05-21 | 2012-10-04 | Sheha Michael A | Personal wireless navigation system |
US8150844B2 (en) * | 2010-08-18 | 2012-04-03 | Facebook, Inc. | Location ranking using social graph information |
US8880589B2 (en) * | 2010-12-29 | 2014-11-04 | Environmental Systems Research Institute, Inc. | Signature based map caching |
US9310217B2 (en) * | 2012-06-12 | 2016-04-12 | Qualcomm Incorporated | Methods and systems for managing content delivery |
US20140019319A1 (en) * | 2012-07-10 | 2014-01-16 | Honeywell International Inc. | Floorplan-based residential energy audit and asset tracking |
-
2014
- 2014-09-26 US US14/498,805 patent/US20150094090A1/en not_active Abandoned
- 2014-10-01 WO PCT/KR2014/009290 patent/WO2015047059A1/en active Application Filing
- 2014-10-01 CN CN201480053964.0A patent/CN105659637A/zh active Pending
- 2014-10-01 KR KR1020167008514A patent/KR20160086322A/ko not_active Application Discontinuation
- 2014-10-01 EP EP14848335.7A patent/EP3053362A1/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7957749B1 (en) * | 2001-12-20 | 2011-06-07 | Adobe Systems Incorporated | Location-based bookmarks |
US8107971B1 (en) * | 2001-12-20 | 2012-01-31 | Adobe Systems Incorporated | Location-based bookmarks |
CN101719128A (zh) * | 2009-12-31 | 2010-06-02 | 浙江工业大学 | 一种基于模糊匹配的中文地理编码确定方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108337640A (zh) * | 2017-01-17 | 2018-07-27 | 联发科技股份有限公司 | 定位的电子装置与执行电子装置的定位操作的方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20160086322A (ko) | 2016-07-19 |
US20150094090A1 (en) | 2015-04-02 |
WO2015047059A1 (en) | 2015-04-02 |
EP3053362A1 (en) | 2016-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101786737B1 (ko) | 사용자 동선 기반 지도데이터 부분 업데이트 시스템 및 방법, 그리고, 이를 위한 기록 매체 | |
US9404759B2 (en) | Method and apparatus of route guidance | |
US8200246B2 (en) | Data synchronization for devices supporting direction-based services | |
US6778837B2 (en) | System and method for providing access to mobile devices based on positional data | |
ES2295582T3 (es) | Metodo para capacitar a un dispositivo de informacion inalambrico para acceso a datos de localizacion. | |
US10631118B2 (en) | Maintaining privacy in location-based operations | |
KR101508076B1 (ko) | 증강현실을 위한 유연한 데이터 다운로드 모델들 | |
US20160061617A1 (en) | Providing in-navigation search results that reduce route disruption | |
US20100125406A1 (en) | Methods, apparatuses, and computer program products for providing point of interest navigation services | |
CN106792545B (zh) | 一种数据传输方法、移动终端及服务器 | |
JP2014209368A (ja) | 個人ウェブページでの地理情報提供方法及びシステム | |
US20100241352A1 (en) | System and method for location-based searches and advertising | |
CN105659637A (zh) | 在设备上缓存位置 | |
KR100574652B1 (ko) | 지도 검색 서비스 제공 방법 및 시스템 | |
WO2015027516A1 (en) | Mechanism for facilitating dynamic location-based zone management for computing systems | |
CN102238472A (zh) | 以移动装置的目前位置更新服务器储存的位置资讯的方法 | |
Beeharee et al. | Exploiting real world knowledge in ubiquitous applications | |
US10189481B2 (en) | Social network service (SNS) server for providing profile information of mobile device user | |
CN102589563A (zh) | 信息处理的方法和装置 | |
KR20200002998A (ko) | 웹페이지에서 위치 변경에 대한 반응 | |
KR101839514B1 (ko) | 지도데이터 부분 업데이트 방법 및 이를 위한 단말 장치 | |
JP2014178261A (ja) | ログ情報公開システム、ログ情報公開装置、ログ情報公開方法及びコンピュータプログラム | |
CN102790944A (zh) | 搜寻联络人的方法及其电子系统 | |
KR20040016285A (ko) | 무선통신망을 이용한 위치추적방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160608 |
|
RJ01 | Rejection of invention patent application after publication |