我想知道是否有人可以帮助我。
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比较陌生,所以也许我完全被误解了。但我只是想知道是否有人可以看看这个请让我知道我哪里出错了?
非常感谢和亲切的问候
答案 0 :(得分:1)
代码反馈:
var clickListener =
意图做什么(缺少某些内容)?geocoder.geocode
的两次调用都会传递一个名为latLng
的属性的对象;传递的对象应与google.maps.GeocoderRequest
api-doc的结构匹配,address
{{3}}具有名为bounds
,location
,region
和latLng
的属性。我建议您将这些属性的名称从location
更改为this
。
if(bouncingMarker != this) {
this.setAnimation(google.maps.Animation.BOUNCE);
bouncingMarker = this;
}
的使用看起来很可疑:this
看起来你属于全局函数,所以看起来使用{{1}}可能没有意义吗?
这是我在第一次通过后看到的全部内容;希望这能帮到你 -