0
jquery 모바일을 사용하여 phonegap 프로젝트를 진행 중입니다. Google지도 api에 익숙합니다. json에서 마커 배열을 가져 와서지도에 표시 할 수 있습니다. & SetInterval 함수를 사용하여 데이터베이스에서 위도와 경도를 업데이트했습니다. 문제는 마커가 setInterval 함수 때문에 계속 중복됩니다. 중복 마커를 제거하기 위해 stackoverflow에서 하나의 솔루션을 찾았으나 이제는 데이터베이스에 마커가 두 개 있지만 여기서 한 마커 만 보여줍니다. 복제하지 않고 두 마커를 업데이트하고 싶습니다. 내 코드는 지금까지 (한 마커 만 작업)중복없이 Google지도에서 여러 마커를 동적으로 이동
setInterval(function() {
$.ajax({
url: "http://dbmysite.net/getlatlongdriver.php",
type: "post",
dataType: 'json',
success: function (data, status) {
$.mobile.loading('hide');
$.each(data, function (i, item) {
$.each(data, function (i, item) {
/* add a marker for each location in response data */
addMarker(item.latitude, item.longitude, item.username);
console.log(item.username, item.latitude, item.longitude);
});
});
},
error: function() {
$.mobile.loading('hide');
alert('unexpected error<br>try again later');
}
});
}, 1000);
function addMarker(lat, lng, username) {
var labels = {
text: username,
color: 'black',
fontSize: '40'
};
var icons = {
url: "../www/img/marker.png", // url
scaledSize: new google.maps.Size(50, 50), // scaled size
origin: new google.maps.Point(0, 0), // origin
anchor: new google.maps.Point(0, 0) // anchor
};
var latlon = {
lat: parseFloat(lat),
lng: parseFloat(lng)
}
if (marker && marker.setMap) {
// if the marker already exists, remove it from the map
marker.setMap(null);
}
// create a new marker
marker = new google.maps.Marker({
map: map,
position: {
lat: parseFloat(lat),
lng: parseFloat(lng)
},
label: labels,
// icon: icons,
title: name
});
google.maps.event.addListener(marker, 'click', function (event) {
map.panTo(this.getPosition());
map.setZoom(16);
}.bind(marker));
}
'에만 마커에 저장할 수있는 marker'. 'addMarker' 바깥에서'var markers = [];'를 시도한 다음 마커를 저장하는 데 사용하십시오 ('markers.push (new google.maps.Marker ...') 마커를 http://dbmysite.net/getlatlongdriver.php에서 가져 와서 위치 만 변경하면'setInterval' 함수가'marker '에서 현재 마커를 찾고, 찾지 못하면 마커를 생성합니다 (마커에 마커를 추가하는'addMarker '버전을 사용하여) 기존 인스턴스를 찾은 다음 찾거나 생성 한 마커의 위치를 업데이트합니다. – LinuxDisciple
도움을 주셔서 감사합니다. 이제 데이터베이스에서 마커를 업데이트 할 수 있지만 문제는 마커가 맵에서 깜박 거리고 있다는 것입니다. 새로운 위치에 따라지도에서 이동해야합니다. 다음은 내 코드입니다. –