我想在geocoder.geocode的de函数内添加一个方法,但是给我看一个像这样的错误 TypeError:this.updateMarkerPosition不是函数。 该方法越位于功能但内部没有,我不知道为什么。
这是代码
var mapa = {
address : "",
geocoder : "",
my_imagen : "",
iniciarMapa : function(){
this.geocoder = new google.maps.Geocoder();
this.my_imagen = './images/edicion.png';
latLng = new google.maps.LatLng(-33.02511643971983,-71.54983196508181);
map = new google.maps.Map(document.getElementById('map1'), {
zoom:15,
center: latLng,
mapTypeId: google.maps.MapTypeId.ROADMAD });
// CREACION DEL MARCADOR
marker = new google.maps.Marker({
position: latLng,
title: 'Arrastra el marcador si quieres moverlo',
map: map,
icon: this.my_imagen,
draggable: true
});
},
updateMarkerPosition : function(latLng) {
document.form_mapa.longitud.value ="latLng.lng()";
document.form_mapa.latitud.value = "latLng.lat()";
},
codeAddress : function() {
this.address = document.form_mapa.direccion.value;
if (this.address == ""){
alert('Debe ingresar una dirección');
return;
}
else
{
var status = this.geocoder.geocode( { 'address': this.address}, function(results, status) {
this.updateMarkerPosition();
});
console.log(status);
}
}
}
答案 0 :(得分:0)
geocoder.geocode
的回调函数将在全局范围内执行,其中this
将引用全局window
- 对象,而不是mapa
改为呼叫mapa.updateMarkerPosition();
。
当你想要更灵活并且不想硬编码对象的名称时,创建一个指向对象的闭包:
codeAddress : function() {
//create reference to the object
var that = this;
this.address = document.form_mapa.direccion.value;
if (this.address == ""){
alert('Debe ingresar una dirección');
return;
}
else
{
var status = this.geocoder.geocode( { 'address': this.address}, function(results, status) {
//use the reference
that.updateMarkerPosition();
});
console.log(status);
}
}