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