是什么原因导致Chrome中的Google地图标记点击错误?

时间:2012-05-31 09:59:57

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

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

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

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

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

我的代码第55行的

Uncaught ReferenceError: reversegeocode is not defined是: 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比较陌生,所以也许我完全被误解了。但我只是想知道是否有人可以看看这个请让我知道我哪里出错了?

非常感谢和亲切的问候

1 个答案:

答案 0 :(得分:1)

代码反馈:

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

看起来你属于全局函数,所以看起来使用{{1}}可能没有意义吗?

这是我在第一次通过后看到的全部内容;希望这能帮到你 -