私は、タブレットで主に使用される小さな個人プロジェクト用にjavascriptを使用してカスタムオブジェクトを作成しています(ただし、ラップトップでも使用されます)。このオブジェクトは、Googleマップ、GPSトラッキング、およびその他の手順を処理します。オブジェクトの内部では、オブジェクトの外部から呼び出されるカップル関数を定義しました(enableGps, disableGps
)。内部enableGps外部error_handlerと内部オブジェクト関数(this.handleGps
)を使用してgpsデータ(緯度、経度、精度など)を処理しながら追跡を開始します。this.handleGps
マップ上の実際のマーカーを更新するために関数を呼び出そうとしましthis.updateGpsMarker
たが、例外がスローされました。
Uncaught TypeError:オブジェクト[オブジェクトウィンドウ]にはメソッド'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);
}
}