Javascript 谷歌地图以用户为中心';s当前位置加上默认位置作为备份

Javascript 谷歌地图以用户为中心';s当前位置加上默认位置作为备份,javascript,api,google-maps,google-maps-api-3,maps,Javascript,Api,Google Maps,Google Maps Api 3,Maps,“我的店铺定位器”设置为以用户的当前位置为中心,但当用户不允许知道其位置时,如何将其默认为位置?else语句中的代码不起作用,但我不确定原因。以下是我所拥有的: google.maps.event.addDomListener(window, 'load', function() { (function() { if(!!navigator.geolocation) { var map; var mapOptions = { zoom: 1

“我的店铺定位器”设置为以用户的当前位置为中心,但当用户不允许知道其位置时,如何将其默认为位置?else语句中的代码不起作用,但我不确定原因。以下是我所拥有的:

google.maps.event.addDomListener(window, 'load', function() {

(function() {

  if(!!navigator.geolocation) {

      var map;

      var mapOptions = {
          zoom: 12,
          mapTypeId: google.maps.MapTypeId.ROADMAP
      };

      map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

      navigator.geolocation.getCurrentPosition(function(position) {

          var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

          map.setCenter(geolocate);

      });

  } else {

    var map = new google.maps.Map(document.getElementById('map-canvas'), {
      center: new google.maps.LatLng(37.7749, -122.4194),
      zoom: 12,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
  }

  var panelDiv = document.getElementById('panel');

  var data = new MedicareDataSource;

  var view = new storeLocator.View(map, data, {
    geolocation: false,
    features: data.getFeatures()
  });

  new storeLocator.Panel(panelDiv, {
    view: view
  });

})();
});

else中的代码不起作用,因为它从未执行过(
!!navigator.geolocation
为true)。如果
geolocation
可用,但遇到错误,将调用
error
函数,但未定义函数

getCurrentPosition方法定义为(从):

navigator.geolocation.getCurrentPosition(成功[,错误[,选项])
参数
success-一个回调函数,将位置对象作为其唯一的输入参数。
错误-可选-可选回调函数,将PositionError对象作为其唯一输入参数。
选项-可选-可选位置选项对象

添加错误函数以设置地图的中心:

function error(err) {
  console.log('ERROR('+err.code+'): '+err.message);
  if (map && map.setCenter) map.setCenter(new google.maps.LatLng(37.7749, -122.4194))
};
然后将其添加到
.getCurrentPosition
调用:

  navigator.geolocation.getCurrentPosition(function(position) {
    var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
    map.setCenter(geolocate);
  }, error);

代码片段:

var映射;
函数错误(err){
console.log('ERROR('+err.code+'):'+err.message);
if(map&&map.setCenter)map.setCenter(新的google.maps.LatLng(37.7749,-122.4194))
};
google.maps.event.addDomListener(窗口'load',函数(){
如果(!!navigator.geolocation){
变量映射选项={
缩放:12,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
navigator.geolocation.getCurrentPosition(函数(位置){
var geologite=new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
地图设置中心(地理定位);
},错误);
}否则{
map=new google.maps.map(document.getElementById('map-canvas'){
中心:新google.maps.LatLng(37.7749,-122.4194),
缩放:12,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
}
});
html,
身体,
#地图画布{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}