google.maps.places.Autocomplete在Firefox中多次请求位置

google.maps.places.Autocomplete在Firefox中多次请求位置,firefox,google-api,Firefox,Google Api,在我的网站上,我有一个singn_-up表单,并使用GoogleAPI向用户提供一些建议。API在Internet Explorer中请求用户的位置一次。但是如果我尝试Firefox,请求会一直循环,直到我点击“Standort immer Freigeben”——意思是“始终接受” 代码在document.ready加载,包含更多代码,但此代码段也会复制错误。 有人有什么想法吗?试试这个: 将API放入您的 这是我的代码: var input=document.getElementById(

在我的网站上,我有一个singn_-up表单,并使用GoogleAPI向用户提供一些建议。API在Internet Explorer中请求用户的位置一次。但是如果我尝试Firefox,请求会一直循环,直到我点击“Standort immer Freigeben”——意思是“始终接受”

代码在document.ready加载,包含更多代码,但此代码段也会复制错误。 有人有什么想法吗?

试试这个: 将API放入您的

这是我的代码:

var input=document.getElementById('autocomplete');
新的google.maps.places.Autocomplete(输入)

请插入地址:

您可能保留了中给出的某些onfocus属性


如果您不要求保留位置建议的边界,则可能需要删除它

若您需要为建议设置边界,请保留一些条件,以确保在用户授予权限的情况下,不会每次都调用位置同意

请将您的条件保存在
geologite()函数中

这个问题只发生在Mozilla FireFox中


您要做的是:

function handlePermission() {
  navigator.permissions.query({name:'geolocation'}).then(function(result) {
    if (result.state == 'granted') {
      geoBtn.style.display = 'none';
    } else if (result.state == 'prompt') {
      geoBtn.style.display = 'none';
      navigator.geolocation.getCurrentPosition(revealPosition,positionDenied,geoSettings);
    } else if (result.state == 'denied') {
      geoBtn.style.display = 'inline';
    }
  });
}
然后放入
handlePermission()在回调函数收到权限后

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false&libraries=places"></script>
 <label for="autocomplete">Please Insert an address:</label>
 <br>
 <input id="autocomplete" type="text" size="100">
var input = document.getElementById('autocomplete');    
new google.maps.places.Autocomplete(input);
<input id="autocomplete" placeholder="Enter your address" onFocus="geolocate()" type="text"></input>
function handlePermission() {
  navigator.permissions.query({name:'geolocation'}).then(function(result) {
    if (result.state == 'granted') {
      geoBtn.style.display = 'none';
    } else if (result.state == 'prompt') {
      geoBtn.style.display = 'none';
      navigator.geolocation.getCurrentPosition(revealPosition,positionDenied,geoSettings);
    } else if (result.state == 'denied') {
      geoBtn.style.display = 'inline';
    }
  });
}