【问题标题】:Getting current location in google map and pass it to a variable in javascript在谷歌地图中获取当前位置并将其传递给javascript中的变量
【发布时间】:2014-05-31 05:59:57
【问题描述】:

我想在谷歌地图中显示从当前位置到已知位置的方向。我的代码如下所示:

      <script>
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;

function initialize() {
  directionsDisplay = new google.maps.DirectionsRenderer();
  var bne = new google.maps.LatLng(-27.572832, 153.065247);
  var mapOptions = {
    zoom:7,
    center: bne
  }
  map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
  directionsDisplay.setMap(map);
}


function calcRoute() {
  navigator.geolocation.getCurrentPosition(
    function (pos) {
      var start = new google.maps.LatLng(pos.coords.latitiude,
                                         pos.coords.longitude);

      var end = 'sunnybank,brisbane';
      var request = {
        origin:start,
        destination:end,
        travelMode: google.maps.TravelMode.DRIVING
      };
      directionsService.route(request, function(response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
          directionsDisplay.setDirections(response);
        }
      });
    }, 
    function (err) {
      alert('ERROR(' + err.code + '): ' + err.message);
    });
  }

google.maps.event.addDomListener(window, 'load', initialize);

    </script>

navigator.geolocation.getCurrentPosition() 似乎对我不起作用,还有其他方法可以检索当前位置并将其传递给 start 变量吗?

【问题讨论】:

  • 您使用的是哪种浏览器?
  • google chrome..重要吗?

标签: javascript google-maps google-maps-api-3 google-maps-markers


【解决方案1】:

根据documentation,getCurrentPosition 函数将Position object 传递给它的回调函数(它是异步的,所以不能返回任何东西),它不是 google.maps.LatLng 对象(但包含创建一个)。

function calcRoute() {
  navigator.geolocation.getCurrentPosition(function(pos) {
    var start = new google.maps.LatLng(pos.coords.latitiude,
                                       pos.coords.longitude);

    var end = 'sunnybank,brisbane';
    var request = {
      origin:start,
      destination:end,
      travelMode: google.maps.TravelMode.DRIVING
    };
    directionsService.route(request, function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);
      } else alert("Directions request failed: "+status);
    });
  }, function(err) {
    alert('ERROR(' + err.code + '): ' + err.message);
  });
}

proof of concept fiddle

【讨论】:

  • 谢谢,我已根据您的建议更改了我的代码~浏览器提示我允许获取位置。但是之后的路线没有显示。我用了 F12 也没有任何提示,知道为什么吗?
  • 也许路线服务返回的状态不是“OK”,我通常会在我刚刚添加到我的答案中的警报中提醒我何时发生这种情况。
【解决方案2】:

可能有 3 个原因:

  1. 您的浏览器不支持地理位置。
  2. 您已禁用地理位置跟踪。在谷歌浏览器中,您可以启用它在选项中查找,在您的设置中搜索位置。
  3. 如果您直接在 PC 上处理 HTML 文件,因为 file:/// 地理定位出于安全原因被禁用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多