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

时间:2014-08-29 09:10:47

标签: firefox google-api

在我的网站上,我有一个singn_up表单并使用Google-Api向用户提供一些建议。 API在Internet Explorer中请求用户的位置一次。但是,如果我尝试使用Firefox,请求将循环播放,直到我点击“#34; Standort immer Freigeben" - 这意味着"始终接受"。

function initialize() {
   autocomplete = new google.maps.places.Autocomplete(
    (document.getElementById('autocomplete')),
     { types: ['geocode'] });
}

代码在document.ready中加载并包含更多代码,但此代码段也会重现错误。 有没有人有想法?

3 个答案:

答案 0 :(得分:0)

试试这个: 将api放在<head></head>

<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">

将它放在你的onload函数中:

var input = document.getElementById('autocomplete');    
new google.maps.places.Autocomplete(input);

这是我的代码:

&#13;
&#13;
var input = document.getElementById('autocomplete');    
new google.maps.places.Autocomplete(input);
&#13;
<html>
  <head>
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false&libraries=places"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  </head>
  <body>
    <label for="autocomplete">Please Insert an address:</label><br>
    <input id="autocomplete" type="text" size="100">
  </body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可能保留了Google Maps API Example

中给出的一些onfocus属性
<input id="autocomplete" placeholder="Enter your address" onFocus="geolocate()" type="text"></input>

OR

如果您不要求保留地点建议的界限,您可能需要将其删除

OR

如果您需要为建议设置界限,请保留一些条件,以便在用户同意的情况下每次都不会调用位置同意。

请将您的情况保持在geolocate() function

  

问题仅在Mozilla FireFox中发生

答案 2 :(得分:0)

您要执行的操作是这样:

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();