我必须在谷歌地图中显示车辆运动,所以点击我的团队我让阿贾克斯称它获取经纬度和所有车辆的一些信息,然后我在地图上放置一个标记。在这里,如果车辆为下一个ajax呼叫而移动,那么当时我会得到差异lng,我会向标记显示过渡效果。这是给我的问题,如何放置具有过渡效果的标记组?
这里是阿贾克斯的我的回调函数,
function callBackFunction(http_request) {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
var rs = http_request.responseText;
//here rs is as follow in servlet fstring=fstring+lat+","+lng+"$"+vn+"@[email protected]"+busImg+"@"+drvcdr+"#";
var SlNo=0;
var position="";
var busImg="";
clear_Icon();
while(rs.length)
{
lat=rs.substring(0,rs.indexOf(","));
lng=rs.substring(rs.indexOf(",")+1,rs.indexOf("$"));
vn=rs.substring(rs.indexOf("$")+1,rs.indexOf("@"));
rs=rs.substring(rs.indexOf("@")+1);
position=rs.substring(0,rs.indexOf("@"));
rs=rs.substring(rs.indexOf("@")+1);
busImg=rs.substring(0,rs.indexOf("@"));
rs=rs.substring(rs.indexOf("@")+1);
drvcdr=rs.substring(0,rs.indexOf("#"));
add_icon(lat,lng,SlNo,vn,position,busImg,drvcdr);
rs=rs.substring(rs.indexOf("#")+1);
SlNo++;
}
} else {
alert('ERR OR: AJAX request status = ' + http_request.status);
}
}
}
放置标记和过渡效果,
function add_icon(lt, ln,n,vn,position,busImg,drvcdr) {
var point = new google.maps.LatLng(lt, ln);
//alert("Icon: "+busImg);
marker= createMarker(point,n,vn,position,busImg,drvcdr);
alert("After Marker placed:"+point.lat()+" "+point.lng());
transitionnn(point);
}
var gmarkers = [];
function createMarker(point, number,vn,position,busImg,drvcdr) {
var angleDegrees = 150;
var marker = new google.maps.Marker({
position: point,
map: map,
raiseOnDrag: true,
icon:busImg,
// animation: google.maps.Animation.DROP,
draggable: false,
zIndex: number,
id:vn,
drvcddr:drvcdr
});
var html = number;
var infowindow = new google.maps.InfoWindow({
content: 'Latitude: ' + point.lat() +
'<br>Longitude: ' + point.lng() + '<br>BusNo : '+ marker.get("id")+ '<br>DrivrConductor : '+ marker.get("drvcddr"),
maxwidth: 1000
});
google.maps.event.addListener(marker, 'click', function() {
//map.setZoom(15);
map.setCenter(marker.getPosition());
infowindow.open(map,marker);
});
gmarkers.push(marker);
return marker;
};
function transitionnn(point)
{
var result = [point.lat(), point.lng()];
transition(result);
}
var numDeltas = 100;
var delay = 100; //milliseconds
var i = 0;
var deltaLat;
var deltaLng;
function transition(result){
i = 0;
deltaLat = (result[0] - position[0])/numDeltas;
deltaLng = (result[1] - position[1])/numDeltas;
moveMarker();
}
function moveMarker(){
position[0] += deltaLat;
position[1] += deltaLng;
var latlng = new google.maps.LatLng(position[0], position[1]);
marker.setPosition(latlng);
if(i!=numDeltas){
i++;
setTimeout(moveMarker, delay);
}
}
的问题是,在地图中我得到的标记,但不确切的位置和过渡效果也没有正确显示。我不知道我哪里有问题,谁能帮我解决这个问题。谢谢。
看起来你正在使用自定义图标,是那些正确地锚定? “过渡效应也显示不正确”是什么意思? – geocodezip
我没有测试过,我只是看代码;这里是我的第一个想法:我不喜欢把deltaLat&deltaLng视为全球的事实。这些应该是moveMarker()的参数。同样,你从服务器获得的数据应该是JSON格式,那么你在子字符串中就不需要这些。 –