我正在制作一个Android应用程序,将GPS坐标发送到显示用户位置(和移动)的Web应用程序,并每秒更新一次。我需要允许地图同时显示和更新多个用户的位置,但我不确定如何执行此操作。当用户按下按钮时,生成随机数以识别该人。坐标连同ID一起连续发送到数据库。地图程序每秒使用AJAX拉取位置并更新地图上的位置。一切正常。
我需要做的是让程序检查新的ID,如果找到新的ID,为该用户创建一个新的折线,并不断实时更新所有用户的位置。我知道JavaScript没有类,但可以用函数创建。下面是我的代码,如果有人可以指出我的方向,主要是在哪里以及如何制作这个“课程”。
function initialize() {
var myLatlng = new google.maps.LatLng(latitude, longitude);
var myOptions = {
zoom: 6,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var points = [];//new google.maps.LatLng(35, -75)];
$(function () {
$(document).ready(function(){
setInterval(function(){
$.ajax({
url: 'api.php', //the script to call to get data
data: "", //you can insert url arguments here to pass to api.php for example "id=5&parent=6"
dataType: 'json', //data format
success: function(data){ //on recieve of reply
lati = data[1]; //get id
longi = data[2]; //get name
var myLatlngt = new google.maps.LatLng(lati, longi);
points.push(new google.maps.LatLng(lati, longi));
var polyline = new google.maps.Polyline({
map: map,
path: points,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2
});
polyline.setMap(map);
//var image = 'icon.png';
var marker = new google.maps.Marker({
position: myLatlngt,
title:"Hello World!",
//icon: image
});
marker.setMap(map);
}
});
}, 1000);
});
});
'api,php'是从数据库中提取元组的文件,lati = data[1]
是从返回的数组中提取的纬度。
答案 0 :(得分:1)
您的示例每秒只会绘制一条折线。您应该能够发送当前地图边界的所有新折线,删除旧折线,并填充新折线。
删除折线:
polyline.setMap(null);
接收当前地图边界的折线:
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var coord_xpos = northEast.lng();
var coord_xneg = southWest.lng();
var coord_ypos = northEast.lat();
var coord_yneg = southWest.lat();
ajax应该发送“data”变量,如:
$.ajax({
data: {coord_xpos: coord_xpos, coord_xneg: coord_xneg, coord_ypos: coord_ypos, coord_yneg: coord_yneg}