Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当地理位置被禁用时,谷歌地图不以位置为中心_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 当地理位置被禁用时,谷歌地图不以位置为中心

Javascript 当地理位置被禁用时,谷歌地图不以位置为中心,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我遇到了一个问题,如果地理定位被禁用,那么地图应该集中在一个指定的位置,但是当它被禁用时,没有加载任何内容。启用地理定位后,if语句的第一部分工作正常。禁用else部件时,为什么不工作 if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function (position) { var latitude = position.coords.latitude;

我遇到了一个问题,如果地理定位被禁用,那么地图应该集中在一个指定的位置,但是当它被禁用时,没有加载任何内容。启用地理定位后,
if
语句的第一部分工作正常。禁用
else
部件时,为什么不工作

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function (position) { 
    var latitude = position.coords.latitude;                    
    var longitude = position.coords.longitude;               
    var coords = new google.maps.LatLng(latitude, longitude);
    var directionsService = new google.maps.DirectionsService();
    var directionsDisplay = new google.maps.DirectionsRenderer();
    var mapOptions = 
    {
      zoom: 15,  
      center: coords, 
      mapTypeControl: true, 
      navigationControlOptions:
      {
        style: google.maps.NavigationControlStyle.SMALL 
      },
      mapTypeId: google.maps.MapTypeId.ROADMAP 
    };
    map = new google.maps.Map(document.getElementById("mapContainer"), mapOptions);
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById(''));
    var request = {
      origin: coords,
      destination: 'BT42 1FL',
      travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function (response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);
      }
    });
  });
}
else {
  alert("Geolocation API is not supported in your browser.");
  var mapOptions =
  {
    zoom: 15,  
    center: 'BT42 1FL',
    mapTypeControl: true, 
    navigationControlOptions:
    {
      style: google.maps.NavigationControlStyle.SMALL 
    },
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  map = new google.maps.Map(document.getElementById("mapContainer"), mapOptions);
}

警报
也不会发出警报。

至少在Chrome 24中,当用户
导航器拒绝地理定位时。地理定位
不会出错

如果用户拒绝地理位置,将调用失败回调(到的第二个参数)。这当然也会发生在任何其他无法获得位置的情况下。使用以下代码(在中提供):

在我的浏览器上,如果我单击“拒绝”按钮,则会提示“truthy”,后跟“failure”。如果无论地理定位是否失败或用户是否拒绝,您都希望给出相同的行为,我建议使用如下代码:

function noGeoInfo() {
    alert("couldn't get your location info; making my best guess!");
}

function geoInfo(position) {
    alert("hey your position is " + position + " isn't that swell?");
}

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(geoInfo, noGeoInfo);
} else {
    noGeoInfo();
}

至少在Chrome 24中,当用户
导航器拒绝地理定位时。地理定位不可靠

如果用户拒绝地理位置,将调用失败回调(到的第二个参数)。这当然也会发生在任何其他无法获得位置的情况下。使用以下代码(在中提供):

在我的浏览器上,如果我单击“拒绝”按钮,则会提示“truthy”,后跟“failure”。如果无论地理定位是否失败或用户是否拒绝,您都希望给出相同的行为,我建议使用如下代码:

function noGeoInfo() {
    alert("couldn't get your location info; making my best guess!");
}

function geoInfo(position) {
    alert("hey your position is " + position + " isn't that swell?");
}

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(geoInfo, noGeoInfo);
} else {
    noGeoInfo();
}

检查navigator.geolocation的值,设置是否正确?是否有调试器?此代码所在的文件将链接到一个文件中,然后该文件将包含在我的
索引
页面中。如何调试包含的文件?检查navigator.geolocation的值,设置是否正确?是否有调试器?此代码所在的文件链接到一个文件中,然后包含在我的
索引
页面中。如何调试包含的文件?那么我如何让它执行语句的
else
部分呢?@Colin747仔细检查后,看起来我一定把测试搞砸了。它确实调用了失败回调(getCurrentPosition的第二个参数),因此我将把它作为函数实现,并将它作为回调传递给getCurrentPosition,然后从else分支执行它。编辑我的答案以与之匹配。很抱歉,您能解释一下为什么在JSFIDLE上,如果我禁用地理位置,则警报会显示
truthy
,然后另一个警报会显示
failure
?当然。在解释时,我会尽量像一个浏览器开发人员那样思考。当您评估
navigator.geolocation
时,您基本上是在问“此浏览器支持地理定位吗?”而此浏览器支持地理定位,因此
if
语句执行
then
块而不是
else块,调用
getCurrentPosition
,然后调用
警报(“truthy!”
。现在,当我们调用
getCurrentPosition
时,我们提供了两个函数:一个是在获得位置时调用(
success
),另一个是在无法获得位置时调用(
failure
)。当
getCurrentPosition
试图获取它发现的位置时,它没有权限,因此它调用
failure
。如果您对事件的顺序感到困惑,我不会责怪您,并建议您研究“javascript回调”的性质.那么我怎样才能让它执行声明中的
else
部分呢?@Colin747仔细检查,似乎我一定把测试搞砸了。它确实调用了失败回调(getCurrentPosition的第二个参数),因此我将把它作为函数实现,并将它作为回调传递给getCurrentPosition,然后从else分支执行它。编辑我的答案以与之匹配。很抱歉,您能解释一下为什么在JSFIDLE上,如果我禁用地理位置,则警报会显示
truthy
,然后另一个警报会显示
failure
?当然。在解释时,我会尽量像一个浏览器开发人员那样思考。当您评估
navigator.geolocation
时,您基本上是在问“此浏览器支持地理定位吗?”而此浏览器支持地理定位,因此
if
语句执行
then
块而不是
else块,调用
getCurrentPosition
,然后调用
警报(“truthy!”
。现在,当我们调用
getCurrentPosition
时,我们提供了两个函数:一个是在获得位置时调用(
success
),另一个是在无法获得位置时调用(
failure
)。当
getCurrentPosition
试图获取它发现的位置时,它没有权限,因此它调用
failure
。如果您对事件的顺序感到困惑,我不会责怪您,并建议您研究“javascript回调”的性质。