我正在使用 javascript 为小型个人项目制作自定义对象,主要用于平板电脑(但也用于笔记本电脑)。该对象处理谷歌地图、gps 跟踪以及其他程序。在对象内部,我定义了要从对象(enableGps, disableGps
)外部调用的耦合函数。在 enableGps 内部,我开始跟踪,同时使用外部 error_handler 和内部对象函数 ( this.handleGps
) 处理 gps 数据(纬度、经度、精度等)。在this.handleGps
我尝试调用this.updateGpsMarker
函数来更新地图上的实际标记但抛出异常。
未捕获的类型错误:对象 [对象窗口] 没有方法“updateGpsMarker”
我该如何this.updateGpsMarker
打电话this.handleGps
?请注意,我需要this.updateGpsMarker
作为从外部调用的函数可用(长解释)我将抛出代码只是为了更清楚地说明我想要做什么。
function RouteAssistant(mapCanvas, mapOptions)
{
// Google mapping and geocoding
this.map = new google.maps.Map(mapCanvas, mapOptions);
this.geo = new google.maps.Geocoder();
this.gpsMarker = null;
this.updateGpsMarker = function(lat, lon)
{
console.log("Updating GPS marker");
if (this.gpsMarker == null)
{
console.log("GPS Marker not created. Creating GPS marker at " + lat + "," + lon);
this.gpsMarker = new google.maps.Marker(
{
position: new google.maps.LatLng(lat,lon),
map: this.map,
title: "I am here!"
});
this.map.setCenter(new google.maps.LatLng(lat,lon));
}
else
{
console.log("GPS Marker created. Updating GPS marker to " + lat + "," + lon);
this.gpsMarker.setPosition(new google.maps.LatLng(lat,lon));
}
}
// GPS and tracking
this.gpsProcess = null;
this.enableGps = function (handle_errors)
{
if (this.gpsProcess == null) {
console.log("Enabling GPS");
this.gpsProcess = navigator.geolocation.watchPosition(this.handleGps, handle_errors);
}
};
this.disableGps = function()
{
if (this.gpsProcess != null)
{
console.log("Disabling GPS");
navigator.geolocation.clearWatch(this.gpsProcess);
this.gpsProcess = null;
}
};
this.handleGps = function(position)
{
this.updateGpsMarker(position.coords.latitude, position.coords.longitude);
}
}