Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 原型,谷歌地图Ajax API V3-错误,但不确定原因g、 e是未定义的_Javascript_Google Maps_Prototypejs - Fatal编程技术网

Javascript 原型,谷歌地图Ajax API V3-错误,但不确定原因g、 e是未定义的

Javascript 原型,谷歌地图Ajax API V3-错误,但不确定原因g、 e是未定义的,javascript,google-maps,prototypejs,Javascript,Google Maps,Prototypejs,我正在尝试写一个简单的页面,用户可以在其中输入一个位置,并将其显示在地图上。在后台应该有一些字段: 纬度、经度、变焦 当用户输入新位置、移动地图或更改缩放级别时,应更新这些内容 请在下面找到我的代码,我正在为此使用原型库。初始加载似乎正常,但当移动地图时,我在控制台中收到一个错误: g、 e未定义-main.js第20行 在缩放时,不会触发事件。进行文本搜索时,LocationFound抱怨SetLatLong不是一个函数 请帮帮我,我过去几个小时一直在兜圈子!!!:( 谷歌地图 变量映射={

我正在尝试写一个简单的页面,用户可以在其中输入一个位置,并将其显示在地图上。在后台应该有一些字段:

纬度、经度、变焦

当用户输入新位置、移动地图或更改缩放级别时,应更新这些内容

请在下面找到我的代码,我正在为此使用原型库。初始加载似乎正常,但当移动地图时,我在控制台中收到一个错误:

g、 e未定义-main.js第20行

在缩放时,不会触发事件。进行文本搜索时,LocationFound抱怨SetLatLong不是一个函数

请帮帮我,我过去几个小时一直在兜圈子!!!:(


谷歌地图
变量映射={
gmap:“”,
地理编码器:'',
映射\u容器:“”,
地理编码_输入:“”,
地理编码表格:“”,
CreateMap:function(){
this.map_container=$('gmap');
this.geocode_form=$('gmap_form');
this.geocode_input=$('gmap_input');
试一试{
这个.ConfigureMap();
这是SetDefaultLocation();
此.ConfigureGeocoder();
这个;
}捕捉(错误){
console.debug(err);
}
},
ConfigureMap:function(){
var DefaultMapOptions={
缩放:3,
中心:新google.maps.LatLng(43.834526782236814,-37.265625),
mapTypeId:google.maps.mapTypeId.ROADMAP
};
this.gmap=new google.maps.Map(this.Map_容器,DefaultMapOptions);
},
配置地理编码器:函数(){
this.geocoder=新的google.maps.geocoder();
},
SetDefaultLocation:函数(){
//TODO:检查位置字符串是否已存在
//if(google.loader.ClientLocation){//如果可能的话,默认为IP位置-不再使用loader,所以暂时注释掉。
//this.SetLatLong(google.loader.ClientLocation.latitude,google.loader.ClientLocation.longitude,8);
//}
},
SetLatLong:功能(lat、lon、zoomLevel){
这个.gmap.setCenter(新的google.maps.LatLng(lat,lon));
如果(缩放级别){
这个.gmap.setZoom(zoomLevel);
}
$(‘纬度’)。值=纬度;
$(‘经度’)。值=lon;
},
听:函数(){
google.maps.event.addListener(this.gmap,'dragend',this.MapMoved());
google.maps.event.addListener(this.gmap,'zoom_changed',this.Zoomed());
观察(this.geocode_表单'submit',this.FindLocation(this.geocode_输入));
},
缩放:函数(){
$('zoom').value=this.gmap.getZoom();
},
MapMoved:function(){
调试('map moved');
var position=this.gmap.getCenter();
this.SetLatLong(position.lat(),position.lng());
},
FindLocation:功能(位置){
如果(位置){
var地址=location.value;
如果(地址){
试一试{
this.geocoder.geocode({'address':address},this.LocationFound);
}捕捉(错误){
console.debug(err);
}
}
}
返回false;
},
LocationFound:功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
//这也快死了(
this.SetLatLong(结果[0].geometry.location.lat(),结果[0].geometry.location.lng());
}否则{
警报(“地理编码因以下原因未成功:“+状态”);
}
}
};
document.observe('dom:loaded',函数(事件){
CreateMap();
}.约束(这个);
分区gmap{
宽度:100%;
高度:400px;
}

位置文本:

纬度、经度:

缩放:

这很有效

google.maps.event.addListener(this.gmap, 'dragend', function () { Map.MapMoved() });

公认的答案并不表明这一点,但这里的问题是:

google.maps.event.addListener(this.gmap, 'zoom_changed', this.Zoomed());
其中:

Zoomed : function () { $('zoom').value = this.gmap.getZoom(); },
请特别注意,调用zoomed的结果(即this.zoomed()返回的undef)被设置为事件处理程序,而不是缩放本身;此处的错误(例如未定义)是将无效值传递给maps事件处理程序API的特征

如果该代码为:

google.maps.event.addListener(this.gmap, 'zoom_changed', this.Zoomed); 
google.maps.event.addListener(this.gmap, 'zoom_changed', this.Zoomed);