从网络浏览器获取 GPS 位置

IT技术 javascript mobile geolocation
2021-01-23 08:03:27

我正在开发一个基于移动的网站,在那里我已经集成了谷歌地图,我需要动态填充谷歌地图的“发件人”字段。

是否可以从网络浏览器获取 GPS 位置并将其动态填充到 Google 地图的“发件人”字段中?

6个回答

如果您使用Geolocation API,就像使用以下代码一样简单。

navigator.geolocation.getCurrentPosition(function(location) {
  console.log(location.coords.latitude);
  console.log(location.coords.longitude);
  console.log(location.coords.accuracy);
});

您也可以使用Google 的 Client Location API

此问题已在是否可以检测移动浏览器的 GPS 位置?从移动浏览器获取位置数据您可以在那里找到更多信息。

对于未来的读者,精度以米为单位
2021-03-14 08:03:27
这是否要求使用您的位置?
2021-03-19 08:03:27
你好,我们可以通过编码自动启用共享位置吗
2021-03-30 08:03:27
提到的 Google Client Location API 仍然存在吗?提供的链接转到 Google Loader
2021-04-01 08:03:27
我在该页面上没有将其视为可用的 API 之一。- 您可以使用谷歌纵横 API:code.google.com/apis/latitude - 这样就可以获取客户端的当前位置:code.google.com/apis/latitude/v1/...
2021-04-09 08:03:27

给出更具体的答案。HTML5 允许您获取地理坐标,并且它做得相当不错。总体而言,浏览器对地理定位的支持非常好,除 ie7 和 ie8(和 Opera mini)之外的所有主要浏览器。IE9 可以完成这项工作,但性能最差。结帐 caniuse.com:

http://caniuse.com/#search=geol

此外,您还需要获得用户的批准才能访问他们的位置,因此请确保检查这一点并给出一些适当的说明,以防它被关闭。尤其是Iphone Safari 开启权限有点麻烦。

dotnetcurry.com/aspnet-mvc/782/...是在 asp.net mvc 环境中实现的方便参考
2021-03-25 08:03:27

使用它,您将在http://www.w3schools.com/html/html5_geolocation.asp找到所有信息

<script>
var x = document.getElementById("demo");
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}
function showPosition(position) {
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
}
</script>
请注意: getCurrentPosition() 和 watchPosition() 不再适用于不安全的来源。要使用此功能,您应该考虑将应用程序切换到安全来源,例如 HTTPS。
2021-03-16 08:03:27

GeoLocation API,但目前对浏览器的支持相当薄弱。大多数关心此类事情的站点都使用 GeoIP 数据库(通常有关于此类系统不准确性的附带条件)。您还可以查看需要用户合作的第三方服务,例如FireEagle

非常感谢您的快速回复。如果可能的话,你能给我一些更多的提示吗...
2021-03-23 08:03:27

可观察的

/*
  function geo_success(position) {
    do_something(position.coords.latitude, position.coords.longitude);
  }

  function geo_error() {
    alert("Sorry, no position available.");
  }

  var geo_options = {
    enableHighAccuracy: true,
    maximumAge        : 30000,
    timeout           : 27000
  };

  var wpid = navigator.geolocation.watchPosition(geo_success, geo_error, geo_options);
  */
  getLocation(): Observable<Position> {
    return Observable.create((observer) => {
      const watchID = navigator.geolocation.watchPosition((position: Position) => {
        observer.next(position);
      });
      return () => {
        navigator.geolocation.clearWatch(watchID);
      };
    });
  }

  ngOnDestroy() {
    this.sub.unsubscribe();
  }