Google Maps API未返回图钉标记

时间:2019-06-11 17:59:14

标签: google-maps google-maps-api-3

运行了几年的Google Maps API大约一个月前开始出现异常行为。

代码在所有浏览器上的开发机器(localHost)上都可以正常工作。

但是在生产服务器上,当从https域(使用Cloudflare通过nginx反向代理的服务器)调用时,我发现以下行为:

a。在Chrome和Safari上,它仅返回默认的“ initMap”地图,不是找到的结果或标记(图钉)。

b。 Firefox,一切正常。

c。 IE,它仅在刷新页面时有效,而不能在页面之间导航。

在我尝试过的事情中:

  1. 清除浏览器缓存中的所有cookie和文件。
  2. 更改Cloudflare的设置(各种缓存和速度设置)。

基本代码如下(通过freemarker进行部署,因此请忽略那些部分。如上所述,该代码确实有效。

function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: {lat: 53.3280182, lng: -6.3743767}
});
var geocoder = new google.maps.Geocoder();
google.maps.event.addDomListener(window, 'load', function() {
geocodeAddress(geocoder, map);
});
}

function geocodeAddress(geocoder, resultsMap) {
var address = "${clientLocation}";
geocoder.geocode({'address': address}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
  resultsMap.setCenter(results[0].geometry.location);
  var marker = new google.maps.Marker({
    map: resultsMap,
    position: results[0].geometry.location
  });
} 
});
}

src="https://maps.googleapis.com/maps/api/js?key=xxxx&callback=initMap"
    async defer>

编辑: 针对以下评论:

  1. 我在测试时确实有以下代码(出于生产目的已将其删除),它未返回任何内容。 (对不起,我应该提到这一点。)

    alert(由于以下原因,Geocode失败:'+ status);

  2. 我在Java控制台中也一无所获。但是,在下面的有用评论提示下,我将警告级别更改为“详细”,并看到了以下错误。

    [Violation]向滚动阻止的“ touchmove”事件添加了非被动事件侦听器。考虑将事件处理程序标记为“被动”,以使页面更具响应性。参见https://www.chromestatus.com/feature/5745543795965952

1 个答案:

答案 0 :(得分:0)

根据上述评论,我将Chrome Java控制台中的错误报告更改为“详细”后就发现了问题。

问题出在Cloudflare上的“火箭装载器”上。

我关闭此功能后,问题解决了。