是什么导致了Chrome中的此Google地图标记单击错误

What is causing this Google Maps marker click error in Chrome?

本文关键字:地图 Google 图标 错误 单击 Chrome 是什么      更新时间:2023-09-26

我想知道是否有人可以帮助我。

此页面允许用户过滤(通过复选框)放置在地图上的标记。单击任何标记都会执行"反向地理编码"操作,并结合选择"搜索位置"按钮,然后用户可以查看单击标记的给定半径内的POI。

出于演示目的,如果您选择"硬币"复选框,单击绿色标记,然后选择"搜索位置"按钮,标记将反弹,右侧边栏将填充POI。

我遇到的问题是在Internet Explorer中一切正常,但是当我尝试在Chrome中运行它时,标记会失去"反弹"功能,"反向地理编码"无法运行,并且在错误控制台中我收到以下错误:

Uncaught ReferenceError: reversegeocode is not defined我的代码的第 55 行,即: reversegeocode(); 我已经在这个网站和其他网站上做了一些阅读,并且通过阅读指南,我尝试将代码的这一部分更改为以下内容:

function geocodePosition(pos) {
    var clickListener =
    document.getElementById('findosgb36lat').value = this.mylat;
    document.getElementById('findosgb36lon').value = this.mylon;
    document.getElementById('address').value = this.myaddress;
    if(bouncingMarker) 
        bouncingMarker.setAnimation(null); 
        if(bouncingMarker != this) { 
            this.setAnimation(google.maps.Animation.BOUNCE); 
            bouncingMarker = this; 
        }
        else bouncingMarker = null; 
    }
    geocoder.geocode({latLng: pos }, function(responses) {
        if (responses && responses.length > 0) {
            updateMarkerAddress(responses[0].formatted_address);
        } else {
            updateMarkerAddress('Cannot determine address at this location.');
        }
    });
}
function updateMarkerAddress(str) {
    document.getElementById('address').value = str;
}
function getAddress(latlng) {
    if (!geocoder) {
        geocoder = new google.maps.Geocoder();
    }
    geocoder.geocode({ 'latLng': latlng }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            // Looping through the result
            for (var i = 0; i < results.length; i++) {
                if (results[0].formatted_address) {
                    document.getElementById('address').value = 
                        results[0].formatted_address;
                } 
            }
        }
    }
)
}

但不幸的是,这不起作用,实际上会产生更多语法错误问题。

我对Javascript比较陌生,所以也许我完全误解了。但我只是想知道是否有人可以看看这个,让我知道我哪里出错了?

非常感谢和亲切的问候

代码反馈:

  • 代码中的第二行是什么:var clickListener =打算做什么(缺少某些内容)?
  • geocoder.geocode的两次调用都传递了一个属性名为:latLng的对象;传递的对象应该与google.maps.GeocoderRequest api-doc的结构匹配,该 api-doc 具有名为 addressboundslocationregion 的属性。我建议您将这些属性的名称从:latLng更改为location
  • 我不确定所示代码的上下文,但此代码部分中this的使用看起来很可疑:

    if(bouncingMarker != this) { 
        this.setAnimation(google.maps.Animation.BOUNCE); 
        bouncingMarker = this; 
    }

看起来您处于全局函数中,因此看起来在这里使用 this 可能没有意义?

这就是我在第一次通过后看到的全部内容;希望这对你有所帮助——