Службы направления Google. Как определить, отключено ли географическое положение в браузере? - PullRequest
1 голос
/ 03 февраля 2012

Если пользователь отключил функцию определения местоположения или использует функцию, не поддерживаемую гео.

Как это сделать программно?Это будет выполнено, если я включу географическое местоположение в моем браузере, если я не включу, я хочу, чтобы выполнялся какой-то другой код. Куда я помещаю тот другой код, который будет выполняться, когда я не включаю или не использую не поддерживаемый браузер.

<script type="text/javascript">
  var directionDisplay;
  var directionsService = new google.maps.DirectionsService();
  var map;

  function initialize() {
    directionsDisplay = new google.maps.DirectionsRenderer();
    var chicago = new google.maps.LatLng(41.850033, -87.6500523);
    var myOptions = {
      zoom:7,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: chicago
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    directionsDisplay.setMap(map);
  }

  function calcRoute() {
    var start = document.getElementById("start").value;
    var end = document.getElementById("end").value;
    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);
      }
    });
  }
</script>
</head>
<body onload="initialize()">
<div>

1 Ответ

1 голос
/ 03 февраля 2012

Я бы использовал модернизатор , чтобы выяснить, поддерживает ли браузер геолокацию, и затем предпринять соответствующие действия.

if (Modernizr.geolocation) {
  //do geolocation/gmaps stuff
} else {
  //do something else
} 

Вы можете даже загрузить прокладки, чтобы предоставить функцию геолокации браузерам, которые ее не поддерживают.В разделе документации по модернизатору есть примеры .

например

Modernizr.load({
  test: Modernizr.geolocation,
  yep : 'geo.js',
  nope: 'geo-polyfill.js'
});

- Edit

<html>
<head>
<script type="text/javascript"  src="modernizer.js"></script>
<script type="text/javascript"
  src="http://maps.googleapis.com/maps/api/js?key=&sensor=true"></script>
<script>

var directionDisplay;
var directionsService = new google.maps.DirectionsService();
var map;

function initialize() { 

  if (Modernizr.geolocation) {
  // Do the geolocation  
      navigator.geolocation.getCurrentPosition(initializeGeo, handle_error);          
  } else {
  // No geolocation path
  initializeNonGeo();
  } 
}

function handle_error(err) {
  alert("Geolocation could not be run");
  if (err.code == 1) {
    alert("user denied");// user said no!
  }
  initializeNonGeo();
}

function initializeGeo() {
  alert("has geolocation");
  directionsDisplay = new google.maps.DirectionsRenderer();
  var chicago = new google.maps.LatLng(41.850033, -87.6500523);
  var myOptions = {
    zoom:7,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    center: chicago
  }
  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  directionsDisplay.setMap(map);
} 

function initializeNonGeo() {
   alert("no geolocation"); //do non geo stuff.
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width: 500px; height: 300px"></div>

</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...