基本的に、自分の位置 (navigator.geolocation で取得) にマーカーを設定し、移動するときにマーカーの位置を更新して、実際の位置を表示したいと考えています。これは私のコードです。
var map;
var marker;
var newLatlng;
var i = 0;
//here i create a map centered on 0,0
function initialize() {
directionsDisplay = new google.maps.DirectionsRenderer();
var chicago = new google.maps.LatLng(0,0);
var mapOptions = {
zoom: 6,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: chicago
}
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
directionsDisplay.setMap(map);
updatePos();
}
//here I set my marker (if i==0 -> first run)
function updatePos(){
var options = {
timeout: 500000, enableHighAccuracy: true
};
var myUpdatedPos = navigator.geolocation.watchPosition(onSuccess, onError, options);
function onSuccess(position) {
if (i==0){
marker = new google.maps.Marker({
position: new google.maps.LatLng(position.coords.latitude, position.coords.longitude),
map: map,
animation: google.maps.Animation.DROP
});
}
i++;
//here I update the position
newLatlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
marker.setPosition(newLatlng);
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
}
このコードは機能していますが、位置の更新が少し遅いです。次の理由が考えられます。
new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
それは私の位置が変わるたびに呼び出されます。しかし、この構造が実際に何をするのかはわかりません。サーバーに呼び出しを行い、応答を待つ必要がありますか?
このコードを高速化するための良いアドバイスはありますか?
前もって感謝します!