你好,我已经在应用程序中实现了带有移动汽车的google map。单击每个标记都会打开信息窗口。但是infoWindow在每次刷新/ ajax调用新的lat,lang后关闭。我试图使infoWindow保持打开状态并与单击的标记一起移动。我的代码如下:
var marker;
var markers = {};
var image;
var device;
var device_icon;
var device_color;
var engine_status;
var moving;
var external_power;
var engine_block;
var myLat = "23.771410000000003";
var myLong = "90.35298833333333";
var infoWindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("map_div"), {
center: new google.maps.LatLng(myLat,myLong),
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: true,
mapTypeControlOptions: {
position: google.maps.ControlPosition.RIGHT_TOP
},
streetViewControl: true,
streetViewControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
},
});
var url = "http://api_url?api=user&ver=1.0&";
var key = user_details.api_key;
var cmd = 'OBJECT_GET_LOCATIONS';
var position;
var current_address = '';
function get_location(){
$.ajax({
type: "GET",
url: url+"key="+key+"&cmd="+cmd+",*",
success: function(result)
{
/* start result object loop*/
Object.keys(result).forEach(function(key) {
result[key].imei = key;
position = result[key];
if(position.speed>0){
device_color = "http://maps.google.com/mapfiles/ms/icons/green-dot.png";
engine_status= 'ON';
moving='Moving';
}
else{
device_color = "http://maps.google.com/mapfiles/ms/icons/blue-dot.png";
engine_status= 'OFF';
moving='Stop';
}
/* get address from lat and long value*/
var lat_long = position.lat+','+position.lng;
$.ajax({
type: "POST",
url: "http://api_url?api=user&ver=1.0&key=<api_key>&cmd=GET_ADDRESS,"+lat_long,
success: function(res){
current_address = res;
}
});
var marker = markers[position.imei];
image = 'https://chart.googleapis.com/chart?chst=d_bubble_icon_text_small&chld='+device_icon+'|bb|'+position.name+'|'+device_color+'|FFFFFF';
if (!marker) {
marker = createMarker({
position: new google.maps.LatLng(position.lat, position.lng),
map: map,
icon:device_color
}, "<p>"+position.name+"<p>"+
"<p>Status:"+moving+"<p>"+
"<p>Speed:"+position.speed+" kmh<p>"+
"<p>Engine: "+engine_status+"</p>"+
"<p>Address: "+current_address+"</p>"
);
markers[position.imei] = marker;
}
else {
marker.setMap(null);
marker = createMarker({
position: new google.maps.LatLng(position.lat, position.lng),
map: map,
icon:device_color
}, "<p>"+position.name+"<p>"+
"<p>Status:"+moving+"<p>"+
"<p>Speed:"+position.speed+" kmh<p>"+
"<p>Engine: "+engine_status+"</p>"+
"<p>Address: "+current_address+"</p>"
);
markers[position.imei] = marker;
}
})
/*end of result object loop */
},
error:function(er){
console.log('error occured');
}
});
}
function createMarker(options, html) {
marker = new google.maps.Marker(options);
var myitem;
if (html) {
google.maps.event.addListener(marker, "click", function () {
myitem = this;
infoWindow.setContent(html);
infoWindow.setPosition(options.position,this);
infoWindow.open(options.map,this);
});
}
return marker;
}
有人可以帮助我,即使在刷新位置后如何保持infoWindow打开并坚持单击标记?预先感谢