0
我试图在Google地图上实时更新标记。我需要一个标记作为起始位置,然后随着位置变化(用户移动),将绘制一条折线,并且一个标记将显示当前位置。所以,每个用户都会有两个标记;一个显示起始位置,一个不断更新并显示当前位置。在Google地图上添加标记
我可以得到绘制的线条和开始标记,但每当位置发生变化时都会使用此代码,而不是旧的标记被更新。我试图使用setPosition();但它似乎并不奏效。有什么想法吗?
function initialize() {
var myLatlng = new google.maps.LatLng(39, -86);
var myOptions = {
zoom: 6,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var loc = {};
var mark = {};
var markers = {};
$(function() {
$(document).ready(function(){
setInterval(function(){
$.ajax({
url: 'api.php', //the script to call to get data
//data: "",
dataType: 'json', //data format
success: function(data){ //on recieve of reply
var user_id = data[0];
var lati = data[1]; //get id
var longi = data[2]; //get name
var myLatlngt = new google.maps.LatLng(lati, longi);
if (typeof loc[user_id] === 'undefined') {
loc[user_id] = [];
}
//if (typeof markers[user_id] === 'undefined') {
//markers[user_id] = [];
//}
if (typeof mark[user_id] === 'undefined') {
mark[user_id] = myLatlngt;
}
loc[user_id].push(myLatlngt);
//markers[user_id].push(myLatlngt);
var marker1;
var x;
for (x in loc) {
var polyline = new google.maps.Polyline({
map: map,
path: loc[x],
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2
});
polyline.setMap(map);
///location variables
var start_loc = loc[user_id];
var start_marker = start_loc[0]; //start location of given user
var current_loc = start_loc[start_loc.length -1]; //last known location of given user
//set the start marker
var marker = new google.maps.Marker({
position: start_marker,
title: user_id
});
marker.setMap(map);
//update the current location marker
if (marker1 != null) {
marker1.setPosition(current_loc);
}
else {
marker1 = new google.maps.Marker({
position: current_loc,
map: map
});
}
}
//console.log('location :::', x);
console.log('Marker: ', mark);
}
});
}, 1000);
});
});
}
它的工作!但现在我有另一个问题。如果我跟踪两个用户,当前位置标记将从用户跳转到用户,而不是每个用户都有标记。任何想法为什么? – mkyong 2012-01-29 05:49:17
尝试创建两个全局标记并相应地移动它们。 – 2012-01-29 06:39:32
如果我想立即创建它们,该怎么办?就像我可以为多个用户创建多段线而不是创建一堆全局变量。 – mkyong 2012-01-29 06:58:06