【问题标题】:Get my android device location with my web application使用我的 Web 应用程序获取我的 android 设备位置
【发布时间】:2017-04-26 07:33:15
【问题描述】:

我为我的客户构建了一个 Web 应用程序,并为他们的客户构建了一个移动应用程序。我开发了一个应用程序,可以使用后台服务以设定的时间间隔跟踪他们的位置。但是,我被要求添加它并根据要求跟踪位置。这意味着在我的网络应用程序上,如果我单击获取用户的位置,我将被发回一个 lat 和 lng。有关如何启动此功能的任何提示都会很棒。

【问题讨论】:

  • function getLocation(){} 似乎是一个好的开始
  • 正如@Weedoze 所说,创建一个javascript 接口函数。检查这个:stackoverflow.com/questions/39657311/…
  • 感谢您的链接,将尝试一下,似乎这可能会起作用。但是对于我的情况,我会将它写在我的服务中而不是我的活动中? @维克兰特
  • 我觉得你可以定义一个通用的 function 而不是 service ,从 webview 触发这个 function 请求(可能是一个按钮点击?)获取精确位置(纬度,long) 并将坐标发送回各自的 webview 。您是在尝试从 JavaScript 还是 Java 获取位置?

标签: javascript php android gps


【解决方案1】:

在您的应用程序中(后台服务):

-将您的 lat 和 lng 作为“最后一个已知位置”写入数据库

在您的 Web 应用中:

-查询数据库并获取最后位置

【讨论】:

  • 到目前为止,我设置的时间间隔是一小时,所以通过 db 获取我最后一个已知位置对我的客户来说不是一个好的选择,有没有办法获得我的客户在请求时的客户?
【解决方案2】:

您可以创建 GCM 服务,当有人单击 Web 上的按钮作为服务器时,通过 GCM 向 android 客户端发送消息。在接收消息事件中,获取您当前的位置并将其发送到服务器。也许this site 可以帮助您创建 GCM 服务。

【讨论】:

  • 在这种情况下,它似乎可以工作,但是我预见到发送到服务器会出现一些问题。我想要的是 webApp 上的 onclick 并获得一个带有 lat lng 的地图的引导弹出模式,或者如果用户没有禁用 wifi 或 GPS 时出现错误消息,你认为 GCM 会工作吗?从我所看到的发送到服务器可能是一个问题,因为点击我执行发送功能到我的应用程序,但我将如何从那里显示 lat lng?
【解决方案3】:

您始终可以使用本机 JavaScript 方法navigator.geolocation,它可以在移动设备和网络中使用。参考下面的例子。


    var options = {
      enableHighAccuracy: true,
      timeout: 5000,
      maximumAge: 0
    };

    function success(pos) {
      var crd = pos.coords;

      console.log('Your current position is:');
      console.log(`Latitude : ${crd.latitude}`);
      console.log(`Longitude: ${crd.longitude}`);
      console.log(`More or less ${crd.accuracy} meters.`);
    };

    function error(err) {
      console.warn(`ERROR(${err.code}): ${err.message}`);
    };

    navigator.geolocation.getCurrentPosition(success, error, options);

example taken from documentation

【讨论】:

  • 对于这种情况,我猜最终用户会通过网络应用程序发送位置?我的目标是,在笔记本电脑上单击按钮并获取最终用户移动设备的位置。
  • 那么您必须保留一个事件,在该事件上应该更新/接收位置。 - 如果设备移动了一定距离,您可以获得更新地理位置的服务。 (这是我曾经在 iOS 中使用的) - 您可以使用 socket.io(如果您使用 nodejs)来发送/接收事件,或任何其他替代方法。 (nkzawa.tumblr.com/post/46850605422/…) - 您也可以通过 Firebase 云消息传递来实现此目的
猜你喜欢
  • 1970-01-01
  • 2013-05-15
  • 2019-01-29
  • 1970-01-01
  • 2022-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多