jquerymobile を使用して小さな Google マップ プロジェクトに取り組んでいます。
まず、 un メソッドを呼び出して、自分の位置に関する地図を表示します
navigator.geolocation.getCurrentPosition(function(position){
showMap(position.coords.latitude, position.coords.longitude);
},
function onFalid(){
alert('Error occur on getCurrentPositionError' + error.code + ':: ' + error.message);
},
{
enableHighAccuracy : true,
maximumAge : 10000
});
これが showMap() のコードです
function showMap(lat,long){
//var latLng = new google.maps.LatLng(data[0].coords.latitude, data[0].coords.longitude);
var latLng = new google.maps.LatLng(lat,long);
// Google Map options
var myOptions = {
zoom: 15,
zoomControl : 1,
center: latLng,
mapTypeId: google.maps.MapTypeId.HYBRID////ROADMAP, SATELLITE, HYBRID and TERRAIN
};
// Create the Google Map, set options
Tracking.mapy = new google.maps.Map(document.getElementById("mapHome"), myOptions);
addMarker(lat, long, map);
}
これはうまくいきました!
ご覧のとおり、最後に別のメソッドを呼び出してマーカーを表示します
function addMarker(lat, long){
//Tracking.mapy.removeOverlay(Tracking.marker);;
var mapBounds = new google.maps.LatLngBounds();
var latitudeAndLongitude = new google.maps.LatLng(lat, long);
var image = Markers.info()[0][1]+Markers.info()[0][2];
marker = new google.maps.Marker({
title : Markers.info()[0][0],
//animation: google.maps.Animation.DROP, //BOUNCE
position: latitudeAndLongitude,
map : Tracking.mapy,
icon : image
});
Tracking.markers.push(marker);
// Clean previous markers THIS IS NOT WORKING!!!!!!!
//google.maps.Map.prototype.clearOverlays = function() {
for (var i = 0; i < Tracking.markers.length; i++ ) {
Tracking.markers[i].setMap(null);
console.log(Tracking.markers[i]);
}
//}
mapBounds.extend(latitudeAndLongitude);
Tracking.mapy.fitBounds(mapBounds);
//trackPath();
}
マーカーをきれいにするためのループを除いて、これもうまくいきます。
さらに複雑なことに、私が路上で仕事をしているとき、マーカーが瞬時にまたは頻繁に動いているのを見たいと思います (egal)。
最初のコードのすぐ下に、その呼び出しを追加します。
var track_id = Markers.info()[0][0];
Tracking.watch_id = navigator.geolocation.watchPosition(
// Success
function(position){
var lat = position.coords.latitude;
var long = position.coords.longitude;
Tracking.data.push(lat, long);
addMarker(lat, long);
},
// Error
function(error){
alert('Error occur on watchPositionError' + error.code + ':: ' + error.message);
},
// Settings
{
frequency: 3000,
enableHighAccuracy: true
});
その後、毎回、配列 Tracking.markers がインクリメントされます
Tracking = {
mapy : null,
watch_id : null,
data : new Array(),
markers : new Array()
}
私の問題はここ にあります 通りを移動すると、自分のマーカーが見えます。動けば動くほどマーカーがつきます。もちろん、私は最後のマーカーを持ちたいだけで、双子と新しい双子を持ちたくありません.
以前のマーカーを消去するにはどうすればよいですか? ご覧のとおり、上記でループを試しました
// Clean previous markers
//google.maps.Map.prototype.clearOverlays = function() {
for (var i = 0; i < Tracking.markers.length; i++ ) {
Tracking.markers[i].setMap(null);
console.log(Tracking.markers[i]);
}
//}
しかし、うまくいきませんでした。google.maps... で始まる行のコメントを外すと、何も機能しません。コメントのままにしておくと、すべてのマーカーが削除されます。だから私はマーカーを見ることができます...
移動後に現在地にマーカーを表示するのを手伝ってもらえますか?