如何使用javascript或jQuery Mobile对特定智能手机进行地理定位?

如何使用javascript或jQuery Mobile对特定智能手机进行地理定位?,jquery,jquery-mobile,mobile,geolocation,google-latitude,Jquery,Jquery Mobile,Mobile,Geolocation,Google Latitude,我正在尝试使用jQuery Mobile跟踪一家出租车公司的特定智能手机。最简单的方法是什么?我听说过谷歌纬度的好消息,但还是有点棘手。有没有办法“插入”特定的智能手机?(当然要得到所有者的许可。)是的,使用HTML5地理定位API。系统将提示用户输入权限,但您可以观看: var watchID = navigator.geolocation.watchPosition(function(position) { do_something(position.coords.latitude, p

我正在尝试使用jQuery Mobile跟踪一家出租车公司的特定智能手机。最简单的方法是什么?我听说过谷歌纬度的好消息,但还是有点棘手。有没有办法“插入”特定的智能手机?(当然要得到所有者的许可。)

是的,使用HTML5地理定位API。系统将提示用户输入权限,但您可以观看:

var watchID = navigator.geolocation.watchPosition(function(position) {
  do_something(position.coords.latitude, position.coords.longitude);
});

是的,使用HTML5地理定位API。系统将提示用户输入权限,但您可以观看:

var watchID = navigator.geolocation.watchPosition(function(position) {
  do_something(position.coords.latitude, position.coords.longitude);
});

您需要完成这项工作,您是为少数驾驶员还是为大量驾驶员创建此应用程序

  • 这就是选择合适的js框架的重要方式。Phonegap当然是一个包装器。实时java脚本客户机/服务器通信体系结构的顶级组合是Node.js和SOCKET.IO框架。不幸的是,它们只在干净的混合应用程序中有用(应用程序构建时没有一些js移动应用程序框架,如jQuery mobile、jQMoby……)
如果要使用js移动应用程序框架,则需要将其与主干js框架结合使用。虽然没有node.js和socket IO那么好,但仍然是一个很好的组合。Node.js和socket IO无法与其他js移动应用程序框架配合使用

  • 使用phonegap地理定位API获取汽车lat和lng位置。与运动GPS应用程序不同,您不需要每秒刷新。车辆正在通过预先定义的路线,因此30秒的刷新时间就足够了

  • 不要将30秒的时间间隔与实时时间(11:00:00、11:00:30、11:01:00…)联系起来,因为每个设备都会尝试在同一时间发送位置刷新,这将杀死服务器基础结构。最好在应用程序初始化后每30秒计时一次

  • 驱动程序的设备应用程序可能是一个小应用程序。它将作为后台进程工作。因为数据将每30秒发送一次,所以网络流量和电池寿命将成为一个真正的问题

  • 请求者设备将在每次预定义的时间获取大量数据(请求者设备周围某个半径内的每辆可能的汽车)。在服务器可以发送大容量数据之前,请求者必须发送其位置。它将被用来获取最近的汽车

  • Google Maps mobile API v3将用作请求者设备上的地图。因为这是一款移动设备,而移动框架因其出色的性能而不为人知,所以不要使用它来显示超过100辆汽车(对于桌面web应用程序,最多只能显示几百辆)

  • 我的最后一个建议是,如果可能的话,创建一个本地移动应用程序,因为混合移动应用程序不太擅长处理实时数据。至少数据量不大。坚持更长的转换间隔,这将节省您的电池。不要考虑使用XML作为客户机/服务器数据。它有很大的数据开销


您需要完成这项工作,您是为少数驾驶员还是为大量驾驶员创建此应用程序

  • 这就是选择合适的js框架的重要方式。Phonegap当然是一个包装器。实时java脚本客户机/服务器通信体系结构的顶级组合是Node.js和SOCKET.IO框架。不幸的是,它们只在干净的混合应用程序中有用(应用程序构建时没有一些js移动应用程序框架,如jQuery mobile、jQMoby……)
如果要使用js移动应用程序框架,则需要将其与主干js框架结合使用。虽然没有node.js和socket IO那么好,但仍然是一个很好的组合。Node.js和socket IO无法与其他js移动应用程序框架配合使用

  • 使用phonegap地理定位API获取汽车lat和lng位置。与运动GPS应用程序不同,您不需要每秒刷新。车辆正在通过预先定义的路线,因此30秒的刷新时间就足够了

  • 不要将30秒的时间间隔与实时时间(11:00:00、11:00:30、11:01:00…)联系起来,因为每个设备都会尝试在同一时间发送位置刷新,这将杀死服务器基础结构。最好在应用程序初始化后每30秒计时一次

  • 驱动程序的设备应用程序可能是一个小应用程序。它将作为后台进程工作。因为数据将每30秒发送一次,所以网络流量和电池寿命将成为一个真正的问题

  • 请求者设备将在每次预定义的时间获取大量数据(请求者设备周围某个半径内的每辆可能的汽车)。在服务器可以发送大容量数据之前,请求者必须发送其位置。它将被用来获取最近的汽车

  • Google Maps mobile API v3将用作请求者设备上的地图。因为这是一款移动设备,而移动框架因其出色的性能而不为人知,所以不要使用它来显示超过100辆汽车(对于桌面web应用程序,最多只能显示几百辆)

  • 我的最后一个建议是,如果可能的话,创建一个本地移动应用程序,因为混合移动应用程序不太擅长处理实时数据。至少数据量不大。坚持更长的转换间隔,这将节省您的电池。不要考虑使用XML作为客户机/服务器数据。它有很大的数据开销


您会发现HTML地理定位更容易实现,但一次跟踪超过几分钟会带来麻烦。Google Latitude是不断跟踪Android或iOS设备的最简单方法,因为客户端工作是为您完成的,您只需了解如何从服务器正确询问Google即可。我用Omniauth gem在Rails上做过几次。以下是一些代码片段,即使您不使用特定的库,它们也可以帮助您加快进度:

Omniauth.rb行指示需要哪些权限:

provider :google_oauth2, GOOGLE_KEY, GOOGLE_SECRET, { access_type: "offline", approval_prompt: "", scope: "https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/latitude.current.best" }
在别处,调用给定访问令牌的纬度:

latitude_data = HTTParty.get('https://www.googleapis.com/latitude/v1/currentLocation?granularity=best&access_token='+self.access_token)['data']
还有一件事要做