怎么修。 [Deprecation] getCurrentPosition()和watchPosition()不再适用于不安全的起源。

时间:2018-05-24 11:23:22

标签: javascript jquery google-maps google-chrome maps

当我尝试在我的临时服务器中运行代码时出现了一个控制台错误" [Deprecation] getCurrentPosition()和watchPosition()不再适用于不安全的起源。要使用此功能,您应该考虑将应用程序切换到安全的来源,例如HTTPS"。

在我的标题中链接脚本标记。

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBlS6vRUDeM0XdliZ4iWDyDMekH45wYcck&libraries=places" type="text/javascript"></script>

获取您当前的位置:         点击这里

    <p id="demo"></p>

    <script>
    var x = document.getElementById("demo");

    function getLocation() {
      document.getElementById("start").value = "";
        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;
        document.getElementById('cityLat').value = position.coords.latitude;
        document.getElementById('cityLng').value = position.coords.longitude;
    }
    </script>
    <script type="text/javascript">
var directionDisplay;
var directionsService = new google.maps.DirectionsService();
var map;

function initialize() {
  directionsDisplay = new google.maps.DirectionsRenderer();
  var bangalore = new google.maps.LatLng(12.9716, 77.5946);
  var myOptions = {
    zoom:12,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    center: bangalore
  }

  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  directionsDisplay.setMap(map);
}

function calcRoute() {
  var startLat = document.getElementById('cityLat').value;
  var startLong = document.getElementById('cityLng').value;

  var endLat = $('select.end').find(':selected').data('lat');
  var endLong = $('select.end').find(':selected').data('long');

  /*alert(startLat+"---"+startLong+"---"+endLat+"---"+endLong);*/

  if(startLat && startLong){
    var start = new google.maps.LatLng(startLat, startLong);
  }else{
    var start = document.getElementById("start").value;
  }

  var end = new google.maps.LatLng(endLat, endLong);

  var distanceInput = document.getElementById("distance");

  var request = {
    origin:start, 
    destination:end,
    travelMode: google.maps.DirectionsTravelMode.DRIVING
  };

  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      directionsDisplay.setDirections(response);
      distanceInput.value = response.routes[0].legs[0].distance.value / 1000;
    }
  });
}
</script>

当我在本地系统中运行上面的代码片段时,我正确地获取了地图。

当我将代码移动到测试服务器时出现控制台错误&#34; [Deprecation] getCurrentPosition()和watchPosition()不再适用于不安全的起源。要使用此功能,您应该考虑将应用程序切换到安全的来源,例如HTTPS&#34;

我试过没有https脚本标记源链接。

有人可以请你给我一个建议吗? 谢谢。

2 个答案:

答案 0 :(得分:0)

您需要安装SSL证书。此解决方案没有快速解决方案。出于安全原因,谷歌浏览器和其他浏览器会阻止这种情况。

答案 1 :(得分:0)

Chrome已禁止对没有SSL的网站使用getCurrentPosition()。

Google Maps API可以解决此问题,但其使用限制很低。