地理位置Google Places API javascript

地理位置Google Places API javascript,javascript,google-maps-api-3,google-places-api,google-geolocation,Javascript,Google Maps Api 3,Google Places Api,Google Geolocation,下面的代码使用GooglePlacesAPI显示了我所在位置附近的条形图。但是,如果用户单击浏览器上的“不允许”警告“使用您的位置”,则不会加载地图。我希望地图默认为else语句中的伦敦坐标 var temp_lat = ''; var temp_lng = ''; var map; var infowindow; getLocation(); function getLocation() { if (navigator.geolocation) { navigator.geolo

下面的代码使用GooglePlacesAPI显示了我所在位置附近的条形图。但是,如果用户单击浏览器上的“不允许”警告“使用您的位置”,则不会加载地图。我希望地图默认为else语句中的伦敦坐标

var temp_lat = '';
var temp_lng = '';
var map;
var infowindow;
getLocation();

function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else {
    temp_lat = 51.507222; //set default lat value
    temp_lng = -0.1275; //set default lng value
  }
}

function showPosition(position) {
  temp_lat = position.coords.latitude;
  temp_lng = position.coords.longitude;
  initMap();
}


function initMap() {
  var location = {
    lat: temp_lat,
    lng: temp_lng
  };
  map = new google.maps.Map(document.getElementById('map'), {
    center: location,
    zoom: 15
  });
  infowindow = new google.maps.InfoWindow();
  var service = new google.maps.places.PlacesService(map);
  service.nearbySearch({
      location: location,
      radius: 50000,
      keyword: ['bar']
    },
    callback);
}

function callback(results, status) {
  if (status === google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}

function createMarker(place) {
  var placeLoc = place.geometry.location;
  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location
  });
  google.maps.event.addListener(marker, 'click', function() {
    infowindow.setContent(place.name);
    infowindow.open(map, this);
  });
}
var temp_lat='';
var temp_lng=“”;
var映射;
var信息窗口;
getLocation();
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(showPosition);
}否则{
temp_lat=51.507222;//设置默认lat值
temp_lng=-0.1275;//设置默认lng值
}
}
功能显示位置(位置){
温度=位置坐标纬度;
温度=位置坐标经度;
initMap();
}
函数initMap(){
变量位置={
纬度:温度,
液化天然气:临时液化天然气
};
map=new google.maps.map(document.getElementById('map'){
中心:位置,
缩放:15
});
infowindow=new google.maps.infowindow();
var service=newgoogle.maps.places.PlacesService(地图);
服务,近距离搜索({
地点:地点,,
半径:50000,
关键词:['bar']
},
回调);
}
函数回调(结果、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
对于(var i=0;i
我已经设法让代码正常工作了-我添加了一个showError函数并调用它。如果用户点击deny,它会设置默认的命令,然后初始化映射。

代码现在在小提琴上更新,以反映帖子上的代码。我知道问题出在哪里,但是,我的javascript已经生锈了,很难修复。基本上,showposition函数将设置坐标,然后初始化地图。如果地理定位被取消,即假,纬度和经度将永远不会被设置,并且在地图初始化之前将失败。我需要showposition函数中的一些布尔值,但不确定从何处开始。geolocation
getCurrentPosition
是一个异步函数。这意味着返回一个位置可能需要一些时间。你为什么不反过来做呢?首先,创建地图并将其设置为默认位置(伦敦),然后,如果地理定位有效,则使用
map.setCenter()
将地图更新到用户位置。